批量导出和取消组合SVG到每个图层/组的PNG

时间:2017-01-25 02:04:13

标签: matlab svg imagemagick inkscape batik

我有一个SVG图像文件夹,我正在研究如何将SVG的每个图层(组)保存到单独的PNG文件中。我在Matlab工作,但我还没有看到任何适用于SVG的方法。我看了几个外部库,Batik是主要的库,但我不知道足够的XML来实现它。我也查看了Inkscape,但它的export options似乎只允许你使用整个栅格化图像。我也查看了ImageMagick,但只找到了一个层方法,它似乎可以制作GIF而不是我想要的SVG图层。

更新:意识到我可以使用ImageMagick以这种方式保存图层convert image.svg[1] output.png,我仍然不知道1)如何批量取消组合SVG中的图层(他们肯定是不可分组的 - 我签到了Illustrator)和2)计算每个SVG中有多少层,这样我就可以通过所有层来单独保存它们。

1 个答案:

答案 0 :(得分:0)

您可以使用 ImageMagick 获取多层文件中“场景”(a.k.a.图层)的数量,如下所示:

convert image.svg -ping -format '%n' info:

或者,如果运行以下命令,它将给出尺寸和颜色空间以及每个图层的类型,每行输出一个图层(因此计算图层数的行数):

identify image.svg

我不认为你会在团队中取得多大的成功 - 虽然我没有尝试过,因为我没有任何多层SVG - 因为 ImageMagick 主要是一个栅格图像编辑器和“外包”(或 ImageMagick 用语,它“委托”)其矢量处理到 librsvg

this Github code可能会取得一些成功。

https://github.com/berteh/svg-objects-export