【发布时间】:2015-04-09 13:03:06
【问题描述】:
我正在尝试使用 canvg 将 svg 转换为画布,并将转换后的画布另存为 png 在我的计算机上。 这是我正在使用的代码 -
function downloadImage()
{
saveImage('chart1');
saveImage('chart2');
saveImage('chart3');
saveImage('chart4');
saveImage('chart5');
saveImage('chart6');
saveImage('chart7');
saveImage('chart8');
}
function saveImage(chartId)
{
var $container = $('#'+chartId),
content = $container.html().trim();
var canvas1 = document.createElement('canvas');
var w=1366,h=768;
canvas1.id = "canvas1";
canvas1.width = w;
canvas1.height = h;
document.getElementById('pngcon').appendChild(canvas1);
var canvas = document.getElementById('canvas1');
canvg(canvas, content);
var theImage = canvas.toDataURL('image/png');
var a = document.createElement("a");
a.id="imagepng"
a.download = fileName+chartId+".png";
a.href = theImage;
document.body.appendChild(a);
document.getElementById("imagepng").click();
$("#pngcon").html('');
$("#imagepng").remove();
}
上面的代码工作正常,并将所有 svg 下载为 png 图像,但正如您所见,使用几乎相同的语句调用 saveImage() 方法 8 次是有道理的。所以我尝试使用循环来执行此操作 -
function downloadImage()
{
for(i=1;i<=8;i++)
{
saveImage('chart'+i);
}
}
但这次错过了其中一个 svg。我对这里发生的事情一无所知。请帮忙...
【问题讨论】:
标签: javascript jquery canvas svg