如何制作GIMP/ImageMagick脚本批量生成192x192 PNG图片?
嘿,太懂这种重复操作磨人的感觉了!针对你需要批量处理大尺寸近正方形图片(裁掉长边两端变正方形,再缩到192x192 PNG)的需求,我给你整理了两个在GIMP里就能搞定的实用方案:
方案1:用Python-Fu脚本实现全自动批量处理
这个方案最灵活,能自动识别每张图片的长边方向,适配不同尺寸的图片,完全不用手动干预。
操作步骤:
- 编写脚本文件:把下面的代码复制到文本编辑器,保存为
batch_crop_resize.py - 放到GIMP脚本目录:
- Windows:
C:\Users\<你的用户名>\AppData\Roaming\GIMP\2.10\scripts - Linux:
~/.config/GIMP/2.10/scripts - Mac:
~/Library/Application Support/GIMP/2.10/scripts
- Windows:
- 重启GIMP,你会在「工具箱」→「扩展」里找到「Batch Crop & Resize to 192x192」这个选项
- 运行脚本:选择需要处理的图片文件夹和输出文件夹,点击确定就自动开始批量处理了!
脚本代码:
from gimpfu import * import os def batch_crop_resize(input_folder, output_folder): # 遍历输入文件夹中的图片文件 for filename in os.listdir(input_folder): # 支持的图片格式可根据需求添加 if filename.lower().endswith(('.jpg', '.jpeg', '.bmp', '.png')): input_path = os.path.join(input_folder, filename) # 加载图片 image = pdb.gimp_file_load(input_path, input_path) drawable = pdb.gimp_image_get_active_drawable(image) img_width = image.width img_height = image.height # 确定正方形目标尺寸(取短边长度) square_size = min(img_width, img_height) crop_offset_x = 0 crop_offset_y = 0 # 判断长边方向,计算裁剪偏移量 if img_width > img_height: # 水平方向更长,左右对称裁剪 crop_offset_x = (img_width - square_size) // 2 else: # 垂直方向更长,上下对称裁剪 crop_offset_y = (img_height - square_size) // 2 # 执行裁剪 pdb.gimp_image_crop(image, square_size, square_size, crop_offset_x, crop_offset_y) # 缩放到192x192 pdb.gimp_image_scale(image, 192, 192) # 构造输出文件名,强制转为PNG格式 base_filename = os.path.splitext(filename)[0] output_path = os.path.join(output_folder, f"{base_filename}.png") # 导出PNG(用默认参数,也可按需调整) pdb.file_png_save_defaults(image, drawable, output_path, output_path) # 关闭图片,不修改原文件 pdb.gimp_image_delete(image) # 注册脚本到GIMP菜单 register( "python_fu_batch_crop_resize", "批量裁剪并缩放为192x192 PNG", "自动识别图片长边,裁剪为正方形后缩放到192x192并导出为PNG", "Stack Overflow Contributor", "Stack Overflow Contributor", "2024", "<Toolbox>/Xtns/Batch Crop & Resize to 192x192", "", [ (PF_DIRNAME, "input_folder", "输入图片文件夹", ""), (PF_DIRNAME, "output_folder", "输出PNG文件夹", "") ], [], batch_crop_resize ) main()
方案2:用GIMP批处理+宏(适合不想写代码的朋友)
⚠️ 注意:这个方案只适合所有图片长边方向一致、尺寸比例接近的情况,因为宏记录的是固定裁剪参数,如果图片尺寸差异大,可能裁剪效果不对。
操作步骤:
- 手动处理一张示例图:打开一张典型的图片,手动完成「裁剪正方形→缩放192x192→导出PNG」的操作
- 记录宏:点击「编辑」→「开始记录宏」,然后重新做一遍刚才的操作,完成后点击「编辑」→「停止记录宏」,给宏起个名字(比如「Crop to Square & Resize 192」)
- 批量执行:点击「文件」→「批处理」,在「播放宏」里选择你刚才记录的宏,设置「输入文件夹」和「输出文件夹」,在「保存选项」里选择PNG格式,确认后就会批量处理所有图片了。
小提示:
- 处理前最好备份原图片,避免意外
- 输出文件夹建议单独新建,防止覆盖原有文件
- 如果脚本运行报错,检查一下GIMP是否启用了Python支持(一般默认是启用的,可在「编辑」→「偏好设置」→「扩展」里确认)
内容的提问来源于stack exchange,提问作者user9728650




