已经提出了类似的问题,对这个问题的理解很清楚,我要求的是替代方案或解决方法:
我想要做的是从画布上获取数据URL,该画布上有一个SVG文档。我已经尝试了各种各样的东西,但只要SVG出现在画布附近,IE9和Chrome就不会让我拥有该URL。
我试过了:
我的想法已经不多了。
我可以尝试使用类似的库来光栅化svg吗? 是否有其他东西我可以在绘图之前将SVG转换为画布,以便画布永远不会知道SVG参与? 是否有一种非常简单的方法可以使用PHP或类似的东西进行转换服务器端?
答案 0 :(得分:0)
如果你想光栅化SVG,这里有几个项目:
这是一个浏览器兼容性表:
答案 1 :(得分:0)
做三件事,
//Get SVG element and then serialize it to convert to a stream of String var svg = document.querySelectorAll('svg'); var base64 = []; for(i=0; i < svg.length; i++){ var serializer = new XMLSerializer(); var svgString = serializer.serializeToString(svg[i]); var canvas = document.querySelectorAll('canvas'); var render_width = 1000; var render_height = 600; //CHange/Set Canvas width/height attributes to reset origin-clean flag canvas[i].height = render_height; canvas[i].width = render_width; //Use canvg library to parse SVG and draw the image on given canvas canvg(canvas[i], svgString, { useCORS: true, scaleWidth: render_width, scaleHeight: render_height, ignoreDimensions: true, log: true }); //Convert canvas to png formated dataURL and save the body of it var rawImage = canvas[i].toDataURL("image/png"); //Array containing all the images in the form of base64 data URLs. base64ImageArray.push(rawImage); }
希望这有帮助。