You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何制作GIMP/ImageMagick脚本批量生成192x192 PNG图片?

嘿,太懂这种重复操作磨人的感觉了!针对你需要批量处理大尺寸近正方形图片(裁掉长边两端变正方形,再缩到192x192 PNG)的需求,我给你整理了两个在GIMP里就能搞定的实用方案:

方案1:用Python-Fu脚本实现全自动批量处理

这个方案最灵活,能自动识别每张图片的长边方向,适配不同尺寸的图片,完全不用手动干预。

操作步骤:

  1. 编写脚本文件:把下面的代码复制到文本编辑器,保存为batch_crop_resize.py
  2. 放到GIMP脚本目录
    • Windows:C:\Users\<你的用户名>\AppData\Roaming\GIMP\2.10\scripts
    • Linux:~/.config/GIMP/2.10/scripts
    • Mac:~/Library/Application Support/GIMP/2.10/scripts
  3. 重启GIMP,你会在「工具箱」→「扩展」里找到「Batch Crop & Resize to 192x192」这个选项
  4. 运行脚本:选择需要处理的图片文件夹和输出文件夹,点击确定就自动开始批量处理了!

脚本代码:

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批处理+宏(适合不想写代码的朋友)

⚠️ 注意:这个方案只适合所有图片长边方向一致、尺寸比例接近的情况,因为宏记录的是固定裁剪参数,如果图片尺寸差异大,可能裁剪效果不对。

操作步骤:

  1. 手动处理一张示例图:打开一张典型的图片,手动完成「裁剪正方形→缩放192x192→导出PNG」的操作
  2. 记录宏:点击「编辑」→「开始记录宏」,然后重新做一遍刚才的操作,完成后点击「编辑」→「停止记录宏」,给宏起个名字(比如「Crop to Square & Resize 192」)
  3. 批量执行:点击「文件」→「批处理」,在「播放宏」里选择你刚才记录的宏,设置「输入文件夹」和「输出文件夹」,在「保存选项」里选择PNG格式,确认后就会批量处理所有图片了。

小提示:

  • 处理前最好备份原图片,避免意外
  • 输出文件夹建议单独新建,防止覆盖原有文件
  • 如果脚本运行报错,检查一下GIMP是否启用了Python支持(一般默认是启用的,可在「编辑」→「偏好设置」→「扩展」里确认)

内容的提问来源于stack exchange,提问作者user9728650

火山引擎 最新活动