ImageMagick

Media

Intro

ImageMagick 是命令行里的图像处理工具箱。裁剪、缩放、压缩、格式转换、批量加水印、生成缩略图,这些不值得打开设计软件的任务,基本都可以交给它。

My Use

我主要用它做两类事:批量转换图片格式,以及把截图、封面、素材压到合适尺寸。它适合处理明确、重复、可脚本化的图像任务,尤其是文件很多的时候。

When to Use / Not Use

适合

  • 图片格式转换,比如 PNG、JPG、WebP、AVIF
  • 批量缩放、裁剪、压缩
  • 生成缩略图、占位图、预览图
  • 查看图片尺寸、色彩空间、元数据
  • 在脚本或 CI 里处理图片资源

不适合

  • 需要人工审美判断的精修
  • 复杂图层编辑
  • 需要实时预览的设计工作
  • 对色彩管理要求极高的印刷流程

Gotchas

  • ImageMagick 7 里主命令是 magick,老教程里的 convert 可能已经不推荐直接用
  • 默认可能会覆盖输出文件,批量处理前先在小目录里试跑
  • JPEG 是有损格式,反复转换会降低质量
  • 透明 PNG 转 JPG 会丢失透明通道,需要显式指定背景色
  • 不同系统编译时启用的格式支持不完全一样,WebP、HEIC、AVIF 可能需要额外依赖

My Setup

# 查看图片信息
magick identify image.png

# 缩放到宽度 1200px,保持比例
magick input.png -resize 1200x output.jpg

# PNG 转 WebP,并控制质量
magick input.png -quality 82 output.webp

# 透明图转 JPG,补白色背景
magick input.png -background white -alpha remove -alpha off output.jpg

Story

ImageMagick 的气质很老派:命令多、参数细、文档厚,但一旦进入脚本化场景,它比 GUI 工具更可靠。很多时候,我不是想“编辑一张图”,而是想“把这一批图按同一规则处理掉”。这正是它擅长的地方。

Minimal Example

# 单张图片压缩成 WebP
magick input.png -resize 1600x -quality 82 output.webp

# 批量把 PNG 转成 WebP(bash)
for f in *.png; do magick "$f" -quality 82 "${f%.png}.webp"; done

# 批量生成缩略图
magick mogrify -path thumbs -thumbnail 320x320 *.jpg

References