温馨提示×

debian中gimp如何批处理

小樊
43
2026-10-16 09:06:37
栏目: 智能运维

在 Debian 下使用 GIMP 进行批处理,常见有几种方式,从简单到灵活依次如下:


一、使用 GIMP 自带批处理(命令行 + Script-Fu)

GIMP 支持在无界面模式下运行 Scheme 脚本(Script-Fu)。

1. 基本命令格式

gimp -i -b '(script-fu-your-batch "参数")' -b '(gimp-quit 0)'

参数说明:

  • -i:无界面(no interface)
  • -b:执行批处理脚本
  • 最后必须 (gimp-quit 0)

2. 示例:批量转换 PNG → JPG

gimp -i -b '(batch-convert "*.png")' -b '(gimp-quit 0)'

但 GIMP 默认没有 batch-convert,需要自己写 Script-Fu:

示例 Script-Fu(保存为 batch.scm)

(define (batch-convert pattern)
  (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-merge-visible-layers image CLIP-TO-IMAGE)))
             (newname (string-append (substring filename 0 (- (string-length filename) 4)) ".jpg")))
        (gimp-file-save RUN-NONINTERACTIVE image drawable newname newname)
        (gimp-image-delete image))
      (set! filelist (cdr filelist)))))

放入:

~/.config/GIMP/2.10/scripts/

然后运行:

gimp -i -b '(batch-convert "*.png")' -b '(gimp-quit 0)'

二、使用 GIMP + Python-Fu(更推荐)

如果你熟悉 Python,Python-Fu 更强大。

1. 启用 Python-Fu

Debian 默认 GIMP 包含:

gimp-python

2. 示例:批量缩放图片

保存为 batch_resize.py:

from gimpfu import *

def batch_resize(pattern, width):
    files = pdb.file_glob(pattern, 1)[1]
    for f in files:
        img = pdb.gimp_file_load(f, f)
        pdb.gimp_image_scale(img, width, int(width * img.height / img.width))
        layer = pdb.gimp_image_merge_visible_layers(img, CLIP_TO_IMAGE)
        pdb.gimp_file_save(img, layer, f, f)
        pdb.gimp_image_delete(img)

register(
    "batch_resize",
    "Batch resize",
    "Batch resize images",
    "You",
    "GPL",
    "2024",
    "",
    "",
    [(PF_STRING, "pattern", "File pattern", "*.jpg"),
     (PF_INT, "width", "New width", 800)],
    [],
    batch_resize)

main()

运行:

gimp -i -b '(python-fu-batch-resize RUN-NONINTERACTIVE "*.jpg" 800)' -b '(gimp-quit 0)'

三、更简单方案(不一定要 GIMP)

如果你只是:

  • 转换格式
  • 批量缩放
  • 加水印

更推荐直接用命令行工具:

# 批量缩放
mogrify -resize 800x ImageMagick

# 批量转换
convert *.png output_%03d.jpg

或:

# 批量处理(推荐)
parallel convert {} {.}.jpg ::: *.png

四、总结建议

需求 推荐方式
简单格式转换 ImageMagick
复杂 GIMP 操作 Script-Fu / Python-Fu
自动化脚本 Python-Fu + bash
不想写脚本 GIMP 插件(如 Bimp)

如果你愿意,可以告诉我:

  • 具体要批处理什么(缩放 / 格式 / 滤镜 / 水印)
  • GIMP 版本(gimp --version)

我可以直接给你可运行的脚本。

0 踩