2014-05-07 52 views
5

我基本上想要将我的SVG转换为PNG图像。因此,我将SVG转换为SVG图像,并尝试在画布上绘制该图像,以便通过toDataURL()方法将其作为PNG获取。这在Chrome中运行良好,但在Firefox中它产生了一个非常不明显的错误:NS_ERROR_NOT_AVAILABLE在Firefox的画布上下文对象上使用svg调用drawImage()的问题

经过搜索和试验一下,我尝试了一个不同的SVG源,并突然一切工作正常。任何想法可能导致该方法对第一个SVG字符串正常工作,但第二个失败?我怎样才能改变我的SVG,以便它可以工作?

小提琴:http://jsfiddle.net/3AXwb/

var image = new Image(); 
image.src = 'data:image/svg+xml,' + escape(xml); 
image.onload = function() { 
    var canvas = document.createElement('canvas'); 
    canvas.width = image.width; 
    canvas.height = image.height; 
    var context = canvas.getContext('2d'); 
    document.getElementById('container').appendChild(canvas); 
    context.drawImage(image, 0, 0); 
} 

回答

17

添加的宽度属性到外<svg>元件。例如。 width =“450”

第一种情况有宽度和高度,仅次于高度和Firefox目前需要宽度和高度。

+0

没有怪胎的样子......:D非常感谢!我搜索了几个小时,最后它是一个愚蠢的宽度属性......你为我节省了更多宝贵的时间,男人。对不起,我不能upvote呢...... – xJREB

+0

谢谢!这是令人难以置信的:D – LorDex