温馨提示×

Linux GIMP如何实现图像的自动化处理

小樊
41
2025-12-27 17:25:47
栏目: 智能运维

Linux 下 GIMP 自动化处理的实用方案

一 方案总览

  • 无头批处理脚本:使用 gimp-console -i -b 执行 Script-FuPython-Fu 脚本,适合无人值守、服务器或 CI 场景。
  • 图形化批量插件:安装 BIMP(Batch Image Manipulation Plugin),通过 GUI 组合缩放、裁剪、格式转换等操作,适合非编程用户。
  • 脚本语言选择:**Script-Fu(Scheme)**内置、轻量;Python-Fu更灵活,适合复杂流程与目录遍历、日志、外部库调用等。
  • 插件目录与启用:脚本通常放在 ~/.config/GIMP/2.10/scripts/(Script-Fu)或 ~/.config/GIMP/2.10/plug-ins/(Python-Fu,需启用 Python-Fu 插件)。

二 命令行无头批处理

  • 典型流程:用 gimp -i -b ‘…’ -b ‘(gimp-quit 0)’ 在每张图上执行一段脚本,处理完自动退出。
  • 示例一(Script-Fu,批量缩放为原图的 50% 并另存):
    #!/usr/bin/env bash
    for f in *.jpg; do
      [ -e "$f" ] || continue
      gimp -i -b "(let* ((img (car (gimp-file-load RUN-NONINTERACTIVE \"$f\" \"$f\")))
                        (lay (car (gimp-image-get-active-layer img))))
                     (gimp-image-scale img
                       (* (car (gimp-image-width img)) 0.5)
                       (* (car (gimp-image-height img)) 0.5))
                     (gimp-file-save RUN-NONINTERACTIVE img lay
                       \"${f%.jpg}_scaled.jpg\" \"${f%.jpg}_scaled.jpg\")
                     (gimp-image-delete img))" \
          -b "(gimp-quit 0)"
    done
    
  • 示例二(Python-Fu,批量改尺寸并保存):
    #!/usr/bin/env python
    from gimpfu import *
    import os
    
    def batch_resize(input_dir, output_dir, w, h):
        os.makedirs(output_dir, exist_ok=True)
        for fn in os.listdir(input_dir):
            if not fn.lower().endswith(('.png', '.jpg', '.jpeg')):
                continue
            in_path  = os.path.join(input_dir, fn)
            out_path = os.path.join(output_dir,
                         f"{os.path.splitext(fn)[0]}_resized{os.path.splitext(fn)[1]}")
            img = pdb.gimp_file_load(in_path, in_path)
            lay = pdb.gimp_image_get_active_layer(img)
            pdb.gimp_image_scale(img, w, h)
            pdb.gimp_file_save(img, lay, out_path, out_path)
            pdb.gimp_image_delete(img)
    
    register(
        "python_fu_batch_resize",
        "Batch Resize Images",
        "Resize images in a folder",
        "Your Name", "Your Name", "2025",
        "", "",  # 无图像菜单入口,纯脚本调用
        [
            (PF_DIRNAME, "input_dir",  "Input Directory",  ""),
            (PF_DIRNAME, "output_dir", "Output Directory", ""),
            (PF_INT,     "width",      "Target Width",  800),
            (PF_INT,     "height",     "Target Height", 600),
        ],
        [],
        batch_resize
    )
    main()
    
    保存为 batch_resize.py,复制到 ~/.config/GIMP/2.10/plug-ins/,赋权后在无头环境运行:
    gimp -i -b '(python-fu-batch-resize RUN-NONINTERACTIVE "/path/in" "/path/out" 1280 720)' -b '(gimp-quit 0)'
    
  • 要点
    • 使用 RUN-NONINTERACTIVE 避免弹窗;每个图像处理后记得 gimp-image-delete 释放内存。
    • 路径含空格需加引号;脚本首行 #!/usr/bin/env 需可执行权限(chmod +x)。

三 图形化批量插件 BIMP

  • 安装与启用
    • 下载 BIMP 插件(通常为 .zip),解压后将文件放入 ~/.config/GIMP/2.10/plug-ins/,重启 GIMP。
  • 使用步骤
    • 打开 GIMP → 文件批处理图像(BIMP)
    • 添加 文件或文件夹;在“操作”面板勾选所需步骤(如 调整大小、裁剪、颜色调整、格式转换),设置参数。
    • 指定 输出目录文件格式(如 PNG/JPG),点击 应用 开始批处理。
  • 适用场景
    • 无需编写代码、快速组合常见操作;对流程可复用、可保存预设。

四 脚本语言与目录速查

  • 语言与用途
    • Script-Fu(Scheme):GIMP 内置,适合简单批处理与快速原型。
    • Python-Fu(Python):更强的流程控制、数据处理与可维护性,适合复杂项目。
  • 常用目录与启用
    • Script-Fu:~/.config/GIMP/2.10/scripts/
    • Python-Fu:~/.config/GIMP/2.10/plug-ins/(在 GIMP → 编辑首选项插件 勾选 Python-Fu
  • 运行方式
    • GUI:在 GIMP 菜单中执行脚本(如滤镜 → Script-Fu)。
    • 无头:使用 gimp -i -b ‘…’ -b ‘(gimp-quit 0)’ 执行脚本片段或调用已注册的 Python-Fu 过程。

五 性能替代与建议

  • 若不需要 GIMP 的高级编辑能力(如滤镜、图层、蒙版),使用 ImageMagick 更高效:
    • 批量缩放为 50%
      convert *.jpg -resize 50% output_%d.jpg
      
    • 安装:
      sudo apt-get install imagemagick    # Debian/Ubuntu
      sudo dnf install imagemagick      # Fedora/CentOS
      
  • 建议
    • 大量小图或服务器环境优先 ImageMagick;需要 GIMP 特有功能(如高级滤镜、图层合成)再选 GIMP 脚本/BIMP

0