Inkscape命令行编程

8
我希望能够通过命令行从现有图像派生新图像。为此,我需要打开/关闭具有图像部分的特定层,然后将结果保存到文件中。但是,虽然我可以在帮助文档中看到许多用于操作图层的命令,但没有任何命令可以选择并打开/关闭特定层。

尽管在发布时并非如此,但现在有一个更具体的StackExchange网站上的相关问题 - sampi
3个回答

7

如果您想要的效果是通过删除一些不需要的元素(例如,layer17layer4711)来实现的,那么可以按照以下方式进行操作:

inkscape image.svg \
  --select=layer17   --verb=EditDelete \
  --select=layer4711 --verb=EditDelete \
  --verb=FileSave --verb=FileClose

请注意,这将用结果覆盖image.svg,因此如果您正在编写脚本,请确保使用副本而不是原始文件。

这对我不起作用(inkscape 0.91)。我使用的是Windows,这可能是问题吗? - René Nyffenegger
很可能还需要适应Windows;上述格式来自Mac或类似的Unix风格环境(在另一个答案中可能会更好地使用Skela的技巧)。如果您发现如何将其适应于Windows,请告诉我们-这将有助于处于您情况下的其他人。 - ecmanaut
1
请注意,在此处您需要使用层id(可以在“编辑-> XML编辑器...”下看到),而不是层名称(这是您在Inkscape GUI中主要看到的)。 - hoijui

3
inkscape image.svg --export-id-only --export-id=layer17 --export-png=image.png --export-width=100 --export-height=100

在Mac上,您可能需要执行以下操作:
/Applications/Inkscape.app/Contents/Resources/bin/inkscape --without-gui --file=image.svg --export-id-only --export-id=layer17 --export-png=image.png --export-width=100 --export-height=100

遗憾的是,这只允许为每个生成的图像选择单个图层。 - hoijui
你可以轻松地将每个图层导出到单独的文件中,然后使用像imageMagick这样的工具将它们合并。 - Skela

2

我已经为这项工作编写了一个Inkscape扩展程序。它会输出每个选项层的一个文件。根据需要还会显示各种图层组合。它也可以脚本化。我称之为SLiCk图层组合器

https://github.com/juanitogan/slick


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接