作为构建过程的一部分,我需要将许多 XCF(GIMP 的本机格式)图像转换为 PNG 格式。我确信使用 GIMP 的批处理模式应该可以实现这一点,但我已经忘记了我以前知道的所有 script-fu。
我的输入图像有多个图层,因此我需要相当于“合并可见图层”的批处理模式,然后是“另存为 PNG”。另请注意,我无法安装任何东西~/.gimp*/scripts/
— 我需要一个独立的命令行,或者一种在源代码树中安装脚本的方法。
请注意,虽然这类似于这个问题 https://stackoverflow.com/questions/630405/converting-xcf-and-other-files-using-command-line-with-gimp,我有一个额外的限制,我需要使用 GIMP 来完成此操作。我尝试了当前版本的 ImageMagick,但它破坏了我的测试图像。
在 jsbueno 发布他的答案之前,我也尝试过在 #gimp IRC 频道上提问。我被引导至Gimptalk 上的这个帖子 http://www.gimptalk.com/index.php?/topic/46715-batch-convert-xcf-to-png/page__p__354668#entry354668其中包含以下代码:
gimp -n -i -b - <<EOF
(let* ( (file's (cadr (file-glob "*.xcf" 1))) (filename "") (image 0) (layer 0) )
(while (pair? file's)
(set! image (car (gimp-file-load RUN-NONINTERACTIVE (car file's) (car file's))))
(set! layer (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))
(set! filename (string-append (substring (car file's) 0 (- (string-length (car file's)) 4)) ".png"))
(gimp-file-save RUN-NONINTERACTIVE image layer filename filename)
(gimp-image-delete image)
(set! file's (cdr file's))
)
(gimp-quit 0)
)
EOF
这个 scriptfu 会查找 xcf 文件,然后为每个文件加载文件,合并可见图层,将结果保存为 PNG,然后“卸载”图像。最后,它退出 GIMP。 glob 方法用于避免为每个图像启动 GIMP。它还回避了从 shell 获取参数到 gimp 的问题。
我发布这个答案只是为了以防万一有人需要一种不使用 GIMP-Python 的方法来做到这一点(可能是因为它没有安装)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)