Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的SVG到PNG_Javascript_Svg_Canvas_Png - Fatal编程技术网

javascript中的SVG到PNG

javascript中的SVG到PNG,javascript,svg,canvas,png,Javascript,Svg,Canvas,Png,我在将svg转换为png(base64)时遇到问题。 Svg到base64可以正常工作,因为它在浏览器中显示得很好。 但是当我尝试加载图像时,它不会加载。谁都知道为什么 var xml = new XMLSerializer().serializeToString(svg); var svg64 = btoa(xml); var b64start = 'data:image/svg+xml;base64,'; var image64 = b64start + svg64; c

我在将svg转换为png(base64)时遇到问题。 Svg到base64可以正常工作,因为它在浏览器中显示得很好。 但是当我尝试加载图像时,它不会加载。谁都知道为什么

  var xml = new XMLSerializer().serializeToString(svg);
  var svg64 = btoa(xml);
  var b64start = 'data:image/svg+xml;base64,';
  var image64 = b64start + svg64;
  console.log(image64);

  const img = new Image();

  img.onload = function() {
    const canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(img, 0, 0);
    const dataBase64 = canvas.toDataURL('image/png');
    console.log(dataBase64);

    generatePowerpoint(response, dataBase64);
  }
  img.onerror = function() {
    console.log(this.src);

  }
  img.src = image64;

这取决于您使用的浏览器。使用Firefox时,svg标记必须具有宽度和高度属性(单位不是%)


它还取决于svg的内容。如果svg包含非拉丁字符,btoa可能会失败(即使在这里这似乎不是问题,因为svg到base64在您的情况下可以正常工作)。

如果图像尚未附加到DOM中,图像是否具有宽度和高度?请尝试使用
naturalWidth
naturalHeight
替代。我不想将其附加到dom,而是将其base64添加到我的powerpoint builder中