简体   繁体   English

下载图表JOINTJS图像| SVG ==>使用Javascript进行PNG

[英]Download a diagram JOINTJS Image | SVG ==> PNG with Javascript

I currently have a problem. 我目前有一个问题。 When wishes to convert a chart created with JOINTJS image, the elements do not display correctly ... 当希望转换使用JOINTJS图像创建的图表时,元素无法正确显示...

The diagram: 图:

http://www.hostingpics.net/viewer.php?id=698706graph.png http://www.hostingpics.net/viewer.php?id=698706graph.png

Conversion : 转换:

http://www.hostingpics.net/viewer.php?id=867158graph2.png http://www.hostingpics.net/viewer.php?id=867158graph2.png

Here is my code: 这是我的代码:

  var canvas = document.getElementById('canvas');
  var svg = document.querySelector('svg');
  var ctx = canvas.getContext('2d');
  var data = (new XMLSerializer()).serializeToString(svg);
  var DOMURL = window.URL || window.webkitURL || window;

  var img = new Image();
  var svgBlob = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
  var url = DOMURL.createObjectURL(svgBlob);

  img.onload = function () {
    ctx.drawImage(img, 0, 0);
    DOMURL.revokeObjectURL(url);

    var imgURI = canvas
        .toDataURL('image/png')
        .replace('image/png', 'image/octet-stream');

    triggerDownload(imgURI);
  };

  img.src = url;

After much research, different codes, I still can not find the solution. 经过大量的研究,不同的代码,我仍然找不到解决方案。 Thanks in advance ! 提前致谢 !

Let me try to answer. 让我试着回答。

Use the below code to get SVG encoded data and store it in var (here 'encodedData') 使用以下代码获取SVG编码数据并将其存储在var中(此处为'encodedData')

var encodedData; 
var s = new XMLSerializer().serializeToString(document.getElementById("ur_svg_id"));
encodedData = window.btoa(s);

Simply draw the SVG Image to a canvas 只需将SVG图像绘制到画布上即可

var canvas = document.getElementById('canvas');
var ctx = c.getContext('2d');
ctx.drawSvg('data:image/svg+xml;base64,' + encodedData, 0, 0, 740, 1100);

Export the canvas to PNG image using filesaver.js 使用filesaver.js将画布导出为PNG图像

canvas.toBlob(function(blob) {
    saveAs(blob, "MyCanvas.png");
});

Make it simple ! 简单一点!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM