在 Debian 下使用 GIMP 进行批量处理,常见有几种方式,从简单到进阶:
GIMP 支持无界面(headless)运行,通过 Scheme 脚本 或 Python-Fu 批量处理。
适合简单统一操作(如转格式、缩放)。
示例:批量把 /home/user/in/*.png 转为 JPG
写脚本 batch-convert.scm
(define (batch-convert pattern outdir)
(let* ((files (cadr (file-glob pattern 1))))
(while files
(let* ((filename (car files))
(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 outdir "/" (car (gimp-image-get-filename image)) ".jpg")
".jpg")
(gimp-image-delete image))
(set! files (cdr files)))))
运行
gimp -i -b '(batch-convert "/home/user/in/*.png" "/home/user/out")' -b '(gimp-quit 0)'
Debian 默认 GIMP 已带 Python 支持(若没有可安装 gimp-python)。
#!/usr/bin/env python
from gimpfu import *
def batch_resize(input_dir, output_dir, width):
import os
for f in os.listdir(input_dir):
path = os.path.join(input_dir, f)
image = pdb.gimp_file_load(path, path)
pdb.gimp_image_scale(image, width, int(width * image.height / image.width))
out = os.path.join(output_dir, f)
pdb.gimp_file_save(image, image.active_layer, out, out)
pdb.gimp_image_delete(image)
register(
"python-fu-batch-resize",
"Batch resize",
"Batch resize images",
"You",
"You",
"2024",
"Batch Resize",
"*",
[],
[],
batch_resize
)
main()
运行:
gimp -i -b 'python-fu-batch-resize RUN-NONINTERACTIVE "/in" "/out" 800' -b '(gimp-quit 0)'
如果你更喜欢点鼠标:
sudo apt install gimp-plugin-registry
或手动编译 BIMP使用:
GIMP → Filters → Batch Image Manipulation
如果你只是批量处理(非复杂修图),以下更快:
mogrify -resize 800x -format jpg *.png
| 需求 | 推荐方式 |
|---|---|
| 简单转格式 | ImageMagick |
| 复杂 GIMP 操作 | Python-Fu |
| 不想写脚本 | BIMP |
| 服务器无界面 | gimp -i -b |
如果你能告诉我:
✅ 要处理什么(缩放 / 水印 / 调色 / 格式)
✅ 是否有 GUI
✅ Debian 版本
我可以直接给你可用脚本。