目前我在 BAT 文件中执行此操作:
Inkscape.exe --file "some.svg" --export-png "some_64.png" --export-width 64
Inkscape.exe --file "some.svg" --export-png "some_96.png" --export-width 96
Inkscape.exe --file "some.svg" --export-png "some_128.png" --export-width 128
但是连续运行 3 次 Inkscape 并打开同一个文件有点慢,另外您必须在运行导出 BAT 之前保存源 svg 文件并确保 BAT 获得正确的文件名。
所以我想知道是否有一个工具(或插件)允许以编程方式或批量从 Inkscape 导出,类似于导出位图对话框,但具有脚本支持?
答案1
另一种方法是为您想要的每种导出尺寸创建一个矩形,并将它们分别放在单独的图层中(例如,命名为导出尺寸 - size64、size96 等)。
诀窍在于,当您选择其中一个矩形并点击导出时,该对象将记住导出属性,例如导出位图的大小以及路径。请务必停留在导出位图对话框的“选择”选项卡中。
使所有矩形图层完全透明。请注意,如果矩形所在的图层是活动图层,仍然可以通过左键单击和 Ctrl+A 来选择该矩形。
定义这些导出目标/矩形后,您可以再次导出它们,方法是选择[1]所有导出矩形并再次按 Ctrl+Shift+E 以显示导出对话框。选中“批量导出 X 个对象”复选框并点击导出!
现在,为了使这个过程经济实惠,您可能需要为所有图形定义一整个矩形数组,以便在每个非图形层中为每个图形提供一个矩形。
[1]选择所有导出矩形需要一个小技巧:在图层对话框中锁定所有非导出矩形图层,然后按 Ctrl+A。瞧 - 所有透明的导出矩形都已选中!
答案2
https://inkscape.org/doc/inkscape-man.html#shell
使用此参数,Inkscape 将进入交互式命令行 shell 模式。在此模式下,您在提示符下输入命令,Inkscape 将执行这些命令,而无需为每个命令运行新的 Inkscape 副本。此功能主要用于脚本和服务器使用:它不会添加新功能,但允许您提高任何重复调用 Inkscape 执行命令行任务(例如导出或转换)的脚本的速度和内存要求。shell 模式下的每个命令都必须是完整有效的 Inkscape 命令行,但不包含 Inkscape 程序名称,例如:
file.svg --export-pdf=file.pdf
不确定 Windows 批处理脚本是否能够进行交互通信。对于当前的脚本语言(例如 Python)来说,这不是问题。
Inkscape 似乎无法编写脚本。Inkscape
扩展似乎主要用于生成/修改/处理 SVG 图形/数据,而不是用于自动化 UI 功能:https://inkscape.org/develop/extensions/(请参阅https://inkscape.org/gallery/=extension/)。
对于一般的自动化(例如输入参数并自动单击导出按钮),请查看https://en.wikipedia.org/wiki/AutoHotkey。
如果只需要将 SVG 渲染为图像,则还有其他支持 SVG 的图形程序/库,而无需 GUI 开销。