ImageMagick 是免费开源图片处理瑞士军刀,35年历史仍在活跃维护。支持 200+ 图片格式,一行命令搞定缩放、裁剪、转格式、加水印、合成。提供命令行界面和 C API,Linux/Mac/Windows 全平台支持,是每个开发者必备的图片处理工具,文末附详细使用教程

🎤 引言

2026 年了,说起图片处理,第一反应是 Photoshop、GIMP,或者现在更流行的 AI 生图。但今天要安利的,是一个 1990 年就开始写、至今还在活跃维护更新的"老古董"——ImageMagick。

35 年了还在更新,GitHub actions 还在跑,CVE 漏洞还在修,版本号已经刷到了 7.x。这本身就是一个传奇。

ImageMagick 的核心哲学很简单:一切皆可命令行。用它可以批量处理几百张图片、给截图自动加水印、把 GIF 逐帧编辑、甚至做科学计算级别的图像分析——全都不需要图形界面,一行命令搞定。

更重要的是:完全免费、开源、跨平台。没有订阅,没有付费功能,没有导出限制。


⭐ 核心功能

1. 格式支持:200+ 图片格式

JPEG、PNG、GIF、TIFF、PDF、WEBP、SVG、PSD、BMP、ICO……基本上你听过的、没听过的格式它都支持。遇到相机拍出来的 RAW 格式?ImageMagick 能读。遇到科研用的光谱图像(64 波段多光谱)?ImageMagick 也能读。

2. 命令行图片处理

这是 ImageMagick 的灵魂。核心命令是 magick(v7 版本,v6 用 convert):

# 图片格式转换
magick input.png output.jpg

# 缩放图片
magick input.jpg -resize 800x600 output.jpg

# 裁剪
magick input.jpg -crop 800x600+100+50 output.jpg

# 加水印
magick input.jpg -gravity southeast -font Arial -pointsize 36 \
  -fill white -annotate +20+20 "© Example" output.jpg

# 图片合成叠加
magick base.jpg overlay.png -gravity center -composite result.jpg

# 批量转格式(当前目录所有 PNG 转 JPG)
mogrify -format jpg *.png

# 查看图片信息
identify input.jpg

3. 图像计算与科学处理

内置 fx 表达式引擎,可以做像素级数学运算:

# 调整亮度对比度
magick input.jpg -fx "lightness+0.2" output.jpg

# 边缘检测
magick input.jpg -canny 0x1+10%+30% edges.jpg

4. 动画制作

把一组图片合成 GIF 动画:

magick -delay 10 frame*.png -loop 0 animation.gif

还支持双边滤波(降噪)、动画优化、帧操作等高级动画功能。

5. 颜色管理

支持 ICC 色彩配置文件的完整颜色管理,可以做色彩空间转换、gamma 调整,确保屏幕显示、打印输出的颜色一致。

6. 安全策略(重要)

ImageMagick 支持配置安全策略,默认提供四档:OpenLimitedSecureWebsafe。官方强烈建议在生产环境使用 Secure 模式,避免处理恶意构造的图片文件触发漏洞。

7. 分布式像素缓存 & GPU 加速

大图处理(TB 级图像)可以分发给多台服务器跑;部分算法已经 OpenCL 化,在 GPU 上加速执行。

8. 跨语言 API

  • C API:ImageMagick 核心就是 C 写的,直接调用最原生态
  • Magick.NET:.NET 开发者福音,C# 调用 ImageMagick 功能无需装软件
  • Python (wand)pip install wand 即可在 Python 里跑 ImageMagick
  • R (magick):R 语言用户也有官方封装包
  • 命令行:最普适的用法

📥 安装与使用

macOS:

brew install imagemagick

Linux(Ubuntu/Debian):

sudo apt install imagemagick

Windows:
下载安装包:https://imagemagick.org/script/download.php#windows

或者用 Chocolatey:

choco install imagemagick

从源码编译(Linux):

./configure
make
sudo make install

iOS:
ImageMagick 还有 iPhone 版本(命令行),可以在手机上跑图片处理,详见:https://imagemagick.org/script/download.php#iOS

Docker(零配置体验):

docker run -v $(pwd):/images docker.io/library/imagemagick \
  magick /images/input.jpg -resize 800x600 /images/output.jpg

🎯 适用场景

  • 批量图片处理:运营同学要给 500 张商品图统一加水印、加边框、缩放,一行 Bash 脚本搞定
  • 自动化流水线:CI/CD 里把截图转格式、生成缩略图、压图,全自动不用手动操作
  • 图片格式转换:PNG 转 WEBP 批量压图,PDF 逐页转图片
  • 科学图像处理:天文图像、医学影像、地质扫描,支持 64 波段多光谱
  • 生成占位图:开发阶段需要占位图?magick -size 800x600 plasma: output.jpg 一行生成
  • GIF 制作:把视频逐帧导出图片,处理后再合成 GIF

🔍 对比 / 替代方案

工具类型核心差异ImageMagick 优势
ffmpeg视频/图片视频处理为主,图片为辅ImageMagick 图片处理更专精
GraphicsMagick图片处理ImageMagick 的分支,更快但功能少ImageMagick 格式更多、社区更大
libvips图片处理库C 库,内存效率高,API 更底层ImageMagick 命令行更友好
Python PIL/Pillow图片处理库Python 封装,功能比 ImageMagick 少ImageMagick 支持 200+ 格式 vs Pillow 的 30+
Sharp (Node.js)图片处理库Node.js 专用,V8 内存优化ImageMagick 全语言通用

如果你的场景是"命令行批量处理图片 + 格式转换 + 脚本自动化",ImageMagick 基本上是这个赛道的最佳选择。


⚠️ 注意事项

  1. CVE-2026-45359 漏洞:ImageMagick 7.1.2-22 之前版本存在 connected-components 操作的堆缓冲区溢出漏洞,已在 7.1.2-22 修复。如果你在用旧版本,立刻升级到最新版。
  2. 安全策略默认配置偏宽松Open 模式下 ImageMagick 允许执行 PS、PDF、HDF 等危险格式的 delegate 命令。生产环境一定要改成 Secure 模式,防止处理恶意图片触发命令注入。
  3. 命令行参数繁多:ImageMagick 功能太多,选项有几百个,新手上手曲线陡。建议从 identifymogrifymagick 三个命令开始用起,文档非常齐全。
  4. Q16 HDRI vs Q8 non-HDRI:默认编译版本是 Q16 HDRI(高精度,内存消耗大)。如果内存不够,可以自己编译 Q8 版本,内存减半但精度也降了。
  5. 大图处理内存爆炸:处理亿级像素图片时,记得加 -limit memory 2GB 之类的限制,否则 ImageMagick 可能把机器内存吃光。
  6. v6 vs v7 语法差异:如果你看到老教程用 convert,那是 v6 的命令。v7 统一成 magickconvert 变成了 magick mogrify

✅ 总结

ImageMagick 就是图片处理领域的 curl——看起来很老,但永远有在用,永远能解决问题。

35 年了还在维护,200+ 格式全支持,命令行全平台通用,还有活跃的 GitHub 和安全修复,这样的项目真的不多了。

优势:

  • 35 年历史,稳定维护至今
  • 200+ 图片格式,基本没有它读不了的格式
  • 命令行 + 脚本自动化,批量处理神器
  • C API + Magick.NET + Python wand + R magick,全语言生态
  • 完全免费,开源,无任何商业限制

不足:

  • CVE 漏洞历史上出现过不少,用之前先升级到最新版
  • 命令行参数太多(这是特点也是缺点)
  • GUI 功能几乎没有,所有操作靠命令

推荐给:需要批量处理图片的开发者/运营、CI/CD 自动化流水线、科研图像处理、任何需要在服务器/脚本里处理图片的场景。

官网:https://imagemagick.org
项目地址:https://github.com/imagemagick/ImageMagick