Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript将SVG另存为PNG未知DOM异常_Javascript_Jquery_Svg_Png - Fatal编程技术网

使用javascript将SVG另存为PNG未知DOM异常

使用javascript将SVG另存为PNG未知DOM异常,javascript,jquery,svg,png,Javascript,Jquery,Svg,Png,我正在尝试使用javascript通过浏览器将SVG转换为PNG 我一直在关注这个问题的答案 它适用于该答案中给定的XML 不幸的是,我得到了未捕获的DomeException:未能在“HtmlCanvaElement”上执行“toDataURL”:可能无法导出受污染的画布。在尝试转换我的SVG时。下面是我的代码片段。有人能告诉我为什么它不起作用吗 var btn=document.querySelector('button'); var svg=document.querySelector(

我正在尝试使用javascript通过浏览器将SVG转换为PNG
我一直在关注这个问题的答案

它适用于该答案中给定的XML 不幸的是,我得到了
未捕获的DomeException:未能在“HtmlCanvaElement”上执行“toDataURL”:可能无法导出受污染的画布。
在尝试转换我的SVG时。下面是我的代码片段。有人能告诉我为什么它不起作用吗

var btn=document.querySelector('button');
var svg=document.querySelector('svg');
var canvas=document.querySelector('canvas');
函数触发器下载(imgURI){
var evt=新建MouseEvent('单击'{
视图:窗口,
泡泡:错,
可取消:正确
});
var a=document.createElement('a');
a、 setAttribute('download','MY_COOL_IMAGE.png');
a、 setAttribute('href',imgURI);
a、 setAttribute('target','u blank');
a、 调度事件(evt);
}
btn.addEventListener('click',函数(){
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
var data=(新的XMLSerializer()).serializeToString(svg);
var DOMURL=window.URL | | window.webkitURL | | window;
var img=新图像();
img.crossOrigin='anonymous'
var svgBlob=newblob([data],{type:'image/svg+xml;charset=utf-8'});
var url=DOMURL.createObjectURL(svgBlob);
img.onload=函数(){
ctx.drawImage(img,0,0);
revokeObjectURL(url);
var imgURI=画布
.toDataURL('image/png')
.replace('image/png'、'image/octet stream');
触发器下载(imgURI);
};
img.src=url;
});
svg到png
ClassName ClassName+字段:类型+字段:类型+方法(类型):类型+方法(类型):类型

您的SVG的
外来对象有问题
删除此项将解决您的问题

var btn=document.querySelector('button');
var svg=document.querySelector('svg');
var canvas=document.querySelector('canvas');
函数触发器下载(imgURI){
var evt=新建MouseEvent('单击'{
视图:窗口,
泡泡:错,
可取消:正确
});
var a=document.createElement('a');
a、 setAttribute('download','MY_COOL_IMAGE.png');
a、 setAttribute('href',imgURI);
a、 setAttribute('target','u blank');
a、 调度事件(evt);
}
btn.addEventListener('click',函数(){
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
var data=(新的XMLSerializer()).serializeToString(svg);
var DOMURL=window.URL | | window.webkitURL | | window;
var img=新图像();
img.crossOrigin='anonymous'
var svgBlob=newblob([data],{type:'image/svg+xml;charset=utf-8'});
var url=DOMURL.createObjectURL(svgBlob);
img.onload=函数(){
ctx.drawImage(img,0,0);
revokeObjectURL(url);
var imgURI=画布
.toDataURL('image/png')
.replace('image/png'、'image/octet stream');
触发器下载(imgURI);
};
img.src=url;
});
svg到png
类名
+字段:类型
+方法(类型):类型

您的SVG的
外来对象有问题
删除此项将解决您的问题

var btn=document.querySelector('button');
var svg=document.querySelector('svg');
var canvas=document.querySelector('canvas');
函数触发器下载(imgURI){
var evt=新建MouseEvent('单击'{
视图:窗口,
泡泡:错,
可取消:正确
});
var a=document.createElement('a');
a、 setAttribute('download','MY_COOL_IMAGE.png');
a、 setAttribute('href',imgURI);
a、 setAttribute('target','u blank');
a、 调度事件(evt);
}
btn.addEventListener('click',函数(){
var canvas=document.getElementById('canvas');
var ctx=canvas.getContext('2d');
var data=(新的XMLSerializer()).serializeToString(svg);
var DOMURL=window.URL | | window.webkitURL | | window;
var img=新图像();
img.crossOrigin='anonymous'
var svgBlob=newblob([data],{type:'image/svg+xml;charset=utf-8'});
var url=DOMURL.createObjectURL(svgBlob);
img.onload=函数(){
ctx.drawImage(img,0,0);
revokeObjectURL(url);
var imgURI=画布
.toDataURL('image/png')
.replace('image/png'、'image/octet stream');
触发器下载(imgURI);
};
img.src=url;
});
svg到png
类名
+字段:类型
+方法(类型):类型

为什么需要将
svg
转换为
png
?为什么不能下载并使用图像作为
svg
?这是一个要求,对此无能为力。为什么需要将
svg
转换为
png
?为什么您不能下载并使用图像作为
svg
?这是一个要求,对此无能为力。如果我使用Canvas2Image插件,是否需要再次转换我的svg?它只需要一次。首先将SVG转换为画布,然后调用
canvas2image
函数。如果使用canvas2image插件,是否需要再次转换SVG?只需一次。首先将SVG转换为画布,然后调用
canvas2image
函数。