Javascript 将svg转换为包含图像标记的png,以获得Base64
我在使用Javascript 将svg转换为包含图像标记的png,以获得Base64,javascript,jquery,svg,Javascript,Jquery,Svg,我在使用将SVG生成为PNG时遇到了问题,为了获得Base64,我的演示是不可能的。有什么解决办法吗 或者可以将此data=“data:image/svg+xml;base64”+btoa(xml)转换为image/png;base64?基于此属性xlink:href显示为跨原点,这将导致错误 Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not
将SVG生成为PNG时遇到了问题,为了获得Base64,我的演示是不可能的。有什么解决办法吗
或者可以将此
data=“data:image/svg+xml;base64”+btoa(xml)
转换为image/png;base64
?基于此属性xlink:href
显示为跨原点,这将导致错误
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement':
Tainted canvases may not be exported.
调用canvas.toDataURL()
时返回
更新 尝试使用
XMLHttpRequest
请参阅
您还可以通过设置字符串“Blob”将二进制文件读取为Blob
到responseType属性
//创建'img'元素
var img=新图像;
img.width=100;
img.高度=100;
//完成后记录
img.onload=函数(){
//请参见此处的'src'`
console.log(this.complete,this);
};
//使用`svg``图像`xlink:href设置`request`的`url``
var link=document.querySelectorAll(“svg”)[0]
.children[0]。属性
.getNamedItem(“xlink:href”).value;
var request=new XMLHttpRequest();
request.responseType=“blob”;
打开(“获取”,链接,为真);
request.onload=函数(e){
var blob=this.response;
var reader=new FileReader();
reader.onload=函数(e){
//请求图像的“数据URI”
console.log(如target.result);
//将'img``src`设置为'e.target.result`:`数据URI`
img.src=e.target.result;
//在“svg”旁边追加“img”`
文件.正文.附件(img);
};
reader.readAsDataURL(blob);
};
//日志错误
request.onerror=函数(e){
控制台日志(e);
};
request.send()代码>
您似乎没有在javascript页面中使用SVG(我在任何地方都看不到testimg1
)。svgOh上有它的id=“asd”
,我想我是瞎了:)看到了吗?我无法在它上面找到Base64。给我空的image@fsi看到了吗?因为这个错误,我基本上看不到图像(base64)?@fsi-See-updated-post;利用XMLHttpRequest
请求图像为Blob
,FileReader()
将Blob
响应转换为数据URI
。