GIMP 3.X批量处理文件脚本适配问题:filelist为空求助
GIMP 3.x 批量处理脚本修正方案
问题根源
你遇到的filelist为空问题,主要是两个原因:
- Scheme(Script-Fu基于Scheme)的布尔值常量是
#t/#f,而非TRUE,错误的参数导致file-glob无法正确匹配文件。 - GIMP 3.x要求所有PDB过程使用命名参数,原脚本中
gimp-file-load、gimp-file-save仍使用旧的有序参数形式,存在兼容性隐患。
修正后的完整脚本
(define (brightness-contrast-multi pattern brightness contrast) (let* ((filelist (cadr (file-glob #:pattern pattern #:filename-encoding #t)))) (while (not (null? filelist)) (let* ((filename (car filelist)) (image (car (gimp-file-load RUN-NONINTERACTIVE #:filename filename #:raw-filename filename))) (drawable (car (gimp-image-get-active-layer image)))) (gimp-image-convert-grayscale image) (gimp-drawable-brightness-contrast drawable brightness contrast) (gimp-file-save RUN-NONINTERACTIVE #:image image #:drawable drawable #:filename filename #:raw-filename filename) (gimp-image-delete image)) (set! filelist (cdr filelist)))))
关键修改点
- 将
#:filename-encoding TRUE改为#:filename-encoding #t,符合Scheme布尔值规范。 - 对
gimp-file-load、gimp-file-save改用命名参数形式,避免废弃警告和执行错误。 - 保留
cadr获取文件列表:file-glob返回的结构为(#t (文件1 文件2 ...)),cadr用于提取内层的文件列表。
运行命令
保持原命令不变:
gimp -i --batch-interpreter=plug-in-script-fu-eval -b '(brightness-contrast-multi "*.png" 0 0.75)' -b '(gimp-quit 0)'
验证步骤
- 确保运行命令的工作目录下存在
.png格式文件。 - 若仍无法匹配,可尝试使用绝对路径(如
"/home/user/images/*.png")作为pattern参数。
内容的提问来源于stack exchange,提问作者Barock
相关产品推荐
相关产品推荐

