使用节点

时间:2018-06-12 09:51:31

标签: javascript node.js express svg

我使用了一个相当不寻常的SVG结构。在绘制图像的过程中,它用于在黑色画布上组装PNG。 (所以svg只提供黑色背景并导入外部PNG)。

所有PNG都保存在服务器上。 所有PNG都相对于SVG链接。 它看起来像这样:

/myFolder
  mySVG.svg
  /resources
    picture.png
    pictureN.png 
mySVG中的内容会像这样:

        <g transform="translate(1 1)">
           <path />
           <image x="0" y="0" width="1325" height="649" href="resources/picture.png" />
        </g>

现在的问题是:我如何通过Node Express提供服务。我试过两件事:

  1. 解决方案:直接通过其路径提供SVG:

    res.sendFile( pathToSVG ) 这导致仅看到黑色背景,因此图像标签未被导入/找不到资源(它从&#34; http://localhost:3000/designs/2/designs/1-o3-d2&#34;)请求资源

  2. 所以这几乎可行我需要将资源添加为静态文件,但我只知道请求发出时这些资源的位置。

    1. 解决方案:将svg转换为服务器上的png: 我曾尝试使用graphicsMagick执行此操作,但它仍然无法解析图像标记中的路径,并且无法打开文件&#34;无法打开文件&#34;在png资源上,因为它无法管理相对路径。

          gm(this.SVGInputPath).setFormat('png').write(this.pictureOutputPath, function(error) {
             console.log('Finished saving', error);
           });
      
    2. 实际起作用:

      终端:如果我 cd 进入myFolder并执行

      gm convert mySVG.svg converted.png 
      

      根据需要输出包含所有嵌套PNG的PNG。

0 个答案:

没有答案