Linux系统中GIMP进行批处理的常用方法
Shell脚本是最基础的批处理方式,通过循环遍历文件夹中的图片文件,调用GIMP的命令行工具(gimp)执行批量操作。
步骤:
batch_resize.sh),内容如下:#!/bin/bash
input_folder="/path/to/input" # 输入文件夹路径
output_folder="/path/to/output" # 输出文件夹路径
mkdir -p "$output_folder" # 创建输出文件夹(若不存在)
# 遍历输入文件夹中的所有.jpg文件
for file in "$input_folder"/*.jpg; do
filename=$(basename "$file")
# 调用GIMP批量调整大小(示例:调整为800x600像素)并保存到输出文件夹
gimp -i -b "(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE \"$file\" \"$file\")))
(drawable (car (gimp-image-get-active-layer image))))
(gimp-image-scale image 800 600)
(gimp-file-save RUN-NONINTERACTIVE image drawable \"$output_folder/$filename\")
(gimp-image-delete image))" -b "(gimp-quit 0)"
done
chmod +x batch_resize.sh./batch_resize.sh说明:脚本中通过gimp -i进入非交互模式,-b执行LISP命令,gimp-quit 0退出GIMP。可根据需求替换为裁剪、颜色调整等操作。
Python-Fu是GIMP的官方Python插件,支持更灵活的批量处理(如调用PIL库、处理图层),适合有编程基础的用户。
步骤:
sudo apt-get install gimp-python-fu
batch_convert.py):#!/usr/bin/env python
from gimpfu import *
import os
def batch_convert(input_folder, output_folder):
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历输入文件夹中的所有图片文件(支持jpg、png)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.jpg', '.png')):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, f"processed_{filename}")
# 加载图像
image = pdb.gimp_file_load(input_path, input_path)
drawable = pdb.gimp_image_get_active_layer(image)
# 执行批量操作(示例:转为PNG格式+调整大小)
pdb.file_png_save(image, drawable, output_path, output_path, 0, 9, 1, 1, 1, 1)
# 关闭图像
pdb.gimp_image_delete(image)
# 注册插件(名称、描述、参数、返回值)
register(
"python_fu_batch_convert",
"Batch convert images to PNG with resizing",
"Convert all JPG/PNG in input folder to PNG in output folder, resized to 800x600",
"Your Name", "Your Name", "2025",
"<Toolbox>/Xtns/Languages/Python-Fu/Batch Convert", # 菜单路径
"", # 图像类型(空表示支持所有)
[
(PF_DIRNAME, "input_folder", "Input Folder", ""),
(PF_DIRNAME, "output_folder", "Output Folder", "")
],
[], # 无输出参数
batch_convert
)
main()
~/.config/GIMP/2.10/plug-ins/),赋予执行权限:chmod +x ~/.config/GIMP/2.10/plug-ins/batch_convert.py。重启GIMP后,在菜单栏选择Xtns > Languages > Python-Fu > Batch Convert,设置输入/输出文件夹即可运行。BIMP(Batch Image Manipulation Plugin)是GIMP的第三方批处理插件,提供图形化界面,适合新手快速上手。
步骤:
bimp.py和bimp.scm文件复制到GIMP插件目录(~/.config/GIMP/2.10/plug-ins/),重启GIMP。文件 > 批处理图像,弹出界面后:
Script-Fu是GIMP的内置脚本语言(基于Scheme),适合简单的批量处理任务,无需额外安装插件。
步骤:
batch_resize.scm):(define (batch-resize pattern width height)
(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))))
(gimp-image-scale image width height) ; 调整大小
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename) ; 覆盖保存
(gimp-image-delete image)) ; 删除图像对象(释放内存)
(set! filelist (cdr filelist))))) ; 处理下一个文件
; 调用函数:批量调整所有.jpg文件为800x600像素
(batch-resize "*.jpg" 800 600)
~/.config/GIMP/2.10/scripts/),重启GIMP。脚本会自动加载,通过滤镜 > 脚本 > batch-resize运行(需根据脚本中的函数名调整)。chmod +x),且输入/输出目录可读写。