我使用了一个相当不寻常的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提供服务。我试过两件事:
解决方案:直接通过其路径提供SVG:
res.sendFile( pathToSVG ) 这导致仅看到黑色背景,因此图像标签未被导入/找不到资源(它从&#34; http://localhost:3000/designs/2/designs/1-o3-d2&#34;)请求资源
所以这几乎可行我需要将资源添加为静态文件,但我只知道请求发出时这些资源的位置。
解决方案:将svg转换为服务器上的png: 我曾尝试使用graphicsMagick执行此操作,但它仍然无法解析图像标记中的路径,并且无法打开文件&#34;无法打开文件&#34;在png资源上,因为它无法管理相对路径。
gm(this.SVGInputPath).setFormat('png').write(this.pictureOutputPath, function(error) {
console.log('Finished saving', error);
});
实际起作用:
终端:如果我 cd 进入myFolder并执行
gm convert mySVG.svg converted.png
根据需要输出包含所有嵌套PNG的PNG。