在 Linux 下用 GIMP 做批处理,常见有几种方式,从简单到高级依次是:
BIMP(Batch Image Manipulation Plugin)是 GIMP 的批处理插件。
安装(Ubuntu / Debian):
sudo apt install gimp-plugin-registry
或手动安装 BIMP(新版 GIMP 可能需源码或 flatpak 版)
使用:
File → Batch Image Manipulation✅ 适合:格式转换、批量缩放、加水印
GIMP 支持用 Scheme 脚本(Script-Fu)批量处理。
1. 写 Script-Fu 脚本(batch-convert.scm)
(define (batch-convert pattern)
(let* ((filelist (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))))
(gimp-file-save RUN-NONINTERACTIVE image drawable
(string-append (substring filename 0 (- (string-length filename) 4)) ".jpg")
".jpg")
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
2. 运行:
gimp -i -b '(batch-convert "*.png")' -b '(gimp-quit 0)'
✅ 适合:固定流程、服务器环境
❌ 脚本语法较难
GIMP 支持 Python-Fu(注意:GIMP 3 已移除 Python 支持)。
示例(GIMP 2.x):
from gimpfu import *
def batch_resize(input_dir, output_dir, width):
import os
for f in os.listdir(input_dir):
if f.endswith(".png"):
img = pdb.gimp_file_load(input_dir + f, f)
pdb.gimp_image_scale(img, width, int(width * img.height / img.width))
pdb.gimp_file_save(img, img.active_layer, output_dir + f, f)
pdb.gimp_image_delete(img)
register(...)
main()
运行:
gimp -i -b 'python-fu-batch-resize RUN-NONINTERACTIVE "/in/" "/out/" 800'
如果你只是批处理图片,Linux 下更高效的是:
mogrify -resize 800x *.png
✅ 速度快
✅ 命令简单
❌ 不如 GIMP 强大(如复杂图层)
| 需求 | 推荐方式 |
|---|---|
| 不懂代码 | BIMP 插件 |
| 服务器/自动化 | GIMP + Script-Fu |
| 高效简单批处理 | ImageMagick |
如果你说明具体要批处理什么(如:改尺寸 / 转格式 / 加水印),我可以给你可直接用的命令或脚本。