【问题标题】:Convert Svg to Png on Client Side在客户端将 Svg 转换为 Png
【发布时间】:2013-10-11 14:46:01
【问题描述】:

我正在开发一个基于 Web 的应用程序,用户可以在其中使用 Svg 创建设计。我想在客户端将 svg 设计转换为 png 图像文件。我找到了使用画布的解决方案,这在 Firefox 中运行良好,但在 chrome 中会产生安全错误。

检查下面的代码谢谢:-

 var mainsvg=document.getElementById('svgforImg');                           
 var canvas=document.getElementById('canvas');                       
 var ctx = canvas.getContext("2d");
                        var data=mainsvg.innerHTML;
                        var DOMURL = self.URL || self.webkitURL || self;
                        var svg = new Blob([data], {
                                type: "image/svg+xml;charset=utf-8"
                        });
                        var url = DOMURL.createObjectURL(svg);
                        var img = new Image();
 img.onload = function() {
                               ctx.drawImage(img, 0, 0);
                                DOMURL.revokeObjectURL(url);                                  
                                var imageurl = canvas.toDataURL("image/png");
}

现在我的变量 imageurl 包含“base64 png”图像。这适用于 Firefox。但是在镀铬线

var imageurl = canvas.toDataURL("image/png");

产生安全错误。

任何帮助将不胜感激。

【问题讨论】:

  • "DOM Exception 18" from canvas 的可能重复项
  • 所以这意味着,我必须移动到服务器端才能为 chrome 和 firefox 转换图像
  • 是的,可能(除非您需要最新的开发版 chrome)。如果 svg 足够简单,您可能会遇到一些运气,例如 canvg - code.google.com/p/canvg.

标签: javascript html image svg


【解决方案1】:

我认为这与this question 有关。 SVG 来自哪个服务器?如果它与您的应用程序的来源不同(请记住:子域很重要!),您可以在原始服务器中添加所需的 http-headers。

【讨论】:

  • 正如您在代码中看到的,SVG 位于 DOM 中。创建画布的同一个地方
猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2019-08-05
相关资源
最近更新 更多