d3.js绘制的svg图像保存为png图片

思路:(svg => canvas => png)

  1. 把svg作为dataurl放在image
  2. 创建一个canvas来显示image
  3. 利用canvas.toDataURL存为图片
  4. 创建a标签出发浏览器下载

核心代码:

        var serializer = new XMLSerializer();
        var source = '<?xml version="1.0" standalone="no"?>\r\n' + serializer.serializeToString(this.SVG.node());
        var image = new Image;
        image.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(source);
        var canvas = document.createElement("canvas");
        canvas.width = 1000;
        canvas.height = 800;
        var context = canvas.getContext("2d");
        context.fillStyle = '#fff';//#fff设置保存后的PNG 是白色的  
        context.fillRect(0, 0, 10000, 10000);
        image.onload = function() {  
          context.drawImage(image, 0, 0);  
          var a = document.createElement("a");  
          a.download = "name.png";  
          a.href = canvas.toDataURL("image/png");  
          a.click();  
      }; 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容