使用javascript将SVG另存为PNG未知DOM异常
我正在尝试使用javascript通过浏览器将SVG转换为PNG使用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(
我一直在关注这个问题的答案 它适用于该答案中给定的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
函数。