我想使用 GIMP 的 ASCII 艺术生成器将一组 .png 图片转换为 .txt 文件。我可以单独执行此操作,只需将图片导出为 .txt 格式,但我找不到任何包含保存在 .txt 文件中的选项的批处理插件。
谢谢。
答案1
基于 GIMP 的默认文件转换脚本基本批处理教程,可能看起来像这样:
(define (script-fu-batch-convert pattern extension)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image)))
(outfile (string-append filename extension)))
(gimp-message outfile)
(gimp-file-save RUN-NONINTERACTIVE image drawable outfile outfile)
(gimp-image-delete image))
(set! filelist (cdr filelist))
)
)
)
你可以这样调用它,例如在 GIMP 的Script-Fu 控制台:
(script-fu-batch-convert "/home/johndoe/Pictures/GIMP/tests/*.jpg" ".tif")
如果您想从命令行调用它,那么根据平台的不同,找出模式的正确引号和格式可能会给您带来或多或少的麻烦。请注意,输出文件将被称为 *.jpg.tif
这对于许多图像文件格式来说都相当有效,因为 gimp-file-save 能够根据文件扩展名确定要导出的格式
对于其他插件,它将失败 - 特别是那些在导出时需要一些用户输入的插件,并且如果未提供默认值则不做任何假设。ASCII-art 插件属于后者。
因此,我们必须能够提供额外的输入,如下所示:
(define (script-fu-batch-convert-aa pattern format extension)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image)))
(outfile (string-append filename extension)))
(gimp-message outfile)
(file-aa-save RUN-NONINTERACTIVE image drawable outfile outfile format)
(gimp-image-delete image))
(set! filelist (cdr filelist))
)
)
)
例如,您可以这样调用它:
(script-fu-batch-convert-aa "/home/johndoe/Pictures/GIMP/tests/*.jpg" "Text file" ".txt")
格式名称由用于将图像转换为 ASCII 艺术的 aalib 库定义,有点奇怪。您可以通过将图像导出到 *.txt 文件来查看它们,导出对话框的下拉列表将如下所示:
是的,如果您想使用该导出格式,您确实必须使用“用于链接到 IRC 频道 II”。