在 GIMP 中批量将图像转换为 ASCII 艺术

在 GIMP 中批量将图像转换为 ASCII 艺术

我想使用 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 文件来查看它们,导出对话框的下拉列表将如下所示:

aalib 格式名称列表

是的,如果您想使用该导出格式,您确实必须使用“用于链接到 IRC 频道 II”。

相关内容