Javascript SVG标记转换为PNG图像并下载
我使用D3图表来显示树形图,所以它现在可以正常工作了,但我需要下载这个svg聊天图像 图表html格式:Javascript SVG标记转换为PNG图像并下载,javascript,jquery,svg,canvas,Javascript,Jquery,Svg,Canvas,我使用D3图表来显示树形图,所以它现在可以正常工作了,但我需要下载这个svg聊天图像 图表html格式: <svg width="960" height="30000"> <g transform="translate(120,20)"> <path>......</path> <path>......</path> <path>......</pat
<svg width="960" height="30000">
<g transform="translate(120,20)">
<path>......</path>
<path>......</path>
<path>......</path>
......
......
</g>
</svg>
因此,请告诉我如何下载svg图表作为图像 下一个链接有一个很好的解决问题的方法 它包含两个主要功能
//让我们创建一个模拟可视化
变量宽度=300,高度=300;
var circleSizeMax=15;
var rMax=数学最小值(宽度、高度)/2-圆形最大值;
var radius=d3.刻度.线性().范围([0,rMax]);
变量角度=d3.scale.linear().range([0,2*Math.PI]);
var size=d3.scale.linear().range([0,circleSizeMax]);
var color=d3.scale.ordinal()范围(“fcfb3c',“fcfb3c'”、“FCFF900'、“FFF555A'、“FF555555A'、“FFD2断路器”、“77D362'、“ffd16f'、“FCFB333C'、“fcfb3c 3C'、、“FCFFFFFFFF900'、、“FCFFFF55555555555A'、、、、、、、、、、、、、、、、、、、、、、“04B33333333B3B3B3B33B33B3333333B33333333B333333333333333333333333333333333333333333333333333333333333333333333333“2733”、“2733',“5A66 6 6 6 6 6 6 6 6 6 6 2”、“3555566665CD”、“DB3340”、“35777777777A”、“2733 33 33 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7”、“3 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,”7 7 7 7 7 7 7 7 7,”7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,”,”,”,”7 7 7 7 7 7 7 7 7 7 7 7,”,”,”,”,”5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6,”6 6 6 6 6 6 6,”,”,”,”6 6 6 6 6,”6 6 6 6 6 6 6 6 6 6 6 6 6 6 6,”,”,”6 6 6 6 6 6“,”FFC33C“,”FBE2B4“5E4412F'、、“35555555E4412F'、、“3555555555E4412F'、、“3555555555E44412F'、、“355555555555E4412F'、“355555555555E555555555E44412F'、、“55555E4444555E444455555555555555555555555555555555E4F,”,”,”,”,”,”,”,”,”,”5E4444444412F'55E412F'55555E45E412F,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”,”55E44444F“4298B5”中的一个,以及“4298B5”中的一个,以及“O3555B55B5B5”中的一个,以及“4298B55B5”中的一个,以及“4898B5B5B5B5”中的一个,“ADC4C”中的一个,以及“ADC4C4C4CCC”中的一个,以及,“92006666O66666A”中的,,,,,,,,,“ADC4C4C4C4C4C C-ADC4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'0DC9F7','7F7“F',“F',3555555F',“F',355555555555F,”F',“F'355555555F',“F',”F',35555555FF47',“F'355555555555F,”F'555555555555555555555F47',“F',“F,”F'555555FF55555555FFFFFFF47,,,,,,,,,,,,,,,,,,,,,,3555555F5555555555555555555555555555555555555555555FFF47,,,,,,,,,,,,,,ා60047A的一个家里的一个家家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里,一个家里的一个家里的一个家里的一个家家里的一个、一个家家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家里的一个家家里的一个家里的一个家家里的一个家家家家里的一个家家里的一个家家里的一个家家里的一个家家家家里的一个家家里的家里的一个家里的一个家里的一个家家里的一个家里的一个家家家家家家家,"F17D80","7374",95’、‘68A8AD’、‘C4D4AF’);
var x=函数(d){返回半径(d.r)*数学cos(角度(d.angle));};
var y=函数(d){返回半径(d.r)*数学sin(角度(d.angle));};
var svg=d3。选择('body')。追加('svg'))
.attr('width',width)
.attr('高度'),高度;
var chart=svg.append('g').attr('transform','translate(+[width/2,height/2]+'));
var data=d3.range(150).map(函数(d){return{r:Math.random(),angle:Math.random(),size:Math.random()};});
图表。选择全部('cirle')
.data(data).enter()
.append('圆')
.attr('class','blendCircle'))
艾特先生({
cx:x,
西:是的,
r:函数(d){返回大小(d.size);},
填充:函数(d,i){返回颜色(i);}
});
//设置导出按钮
d3.选择(#saveButton')。打开('单击',函数()){
var svgString=getSVGString(svg.node());
svgString2Image(svgString,2*宽,2*高,'png',save);//将Blob和filesize字符串传递给回调函数
函数保存(数据块、文件大小){
saveAs(dataBlob,'D3-vis导出为PNG.PNG');//FileSaver.js函数
}
});
//以下是处理实际导出的函数:
//getSVGString(svgNode)和svgString 2Image(svgString、宽度、高度、格式、回调)
函数getSVGString(svgNode){
svgNode.setAttribute('xlink','http://www.w3.org/1999/xlink');
var cssStyleText=getCSSStyles(svgNode);
附录CSS(cssStyleText,svgNode);
var serializer=新的XMLSerializer();
var svgString=serializer.serializeToString(svgNode);
svgString=svgString.replace(/(\w+):?xlink=/g,'xmlns:xlink=');//修复没有命名空间的根xlink
svgString=svgString.replace(/NS\d+:href/g,'xlink:href');//Safari NS命名空间修复
返回svgString;
函数getCSSStyles(parentElement){
var selectorTextArr=[];
//将父元素Id和类添加到列表中
选择Ortextarr.push(“#”+parentElement.id);
for(var c=0;cd3.select('#saveButton').on('click', function(){
// alert('test');
var svgString = getSVGString(svg.node());
// console.log(svgString);
svgString2Image( svgString, 2*width, 2*height, 'png', save ); // passes Blob and filesize String to the callback
function save( dataBlob, filesize ){
saveAs( dataBlob, 'D3 vis exported to PNG.png' ); // FileSaver.js function
}
});