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.jpg3. 图像计算与科学处理
内置 fx 表达式引擎,可以做像素级数学运算:
# 调整亮度对比度
magick input.jpg -fx "lightness+0.2" output.jpg
# 边缘检测
magick input.jpg -canny 0x1+10%+30% edges.jpg4. 动画制作
把一组图片合成 GIF 动画:
magick -delay 10 frame*.png -loop 0 animation.gif还支持双边滤波(降噪)、动画优化、帧操作等高级动画功能。
5. 颜色管理
支持 ICC 色彩配置文件的完整颜色管理,可以做色彩空间转换、gamma 调整,确保屏幕显示、打印输出的颜色一致。
6. 安全策略(重要)
ImageMagick 支持配置安全策略,默认提供四档:Open、Limited、Secure、Websafe。官方强烈建议在生产环境使用 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 imagemagickLinux(Ubuntu/Debian):
sudo apt install imagemagickWindows:
下载安装包:https://imagemagick.org/script/download.php#windows
或者用 Chocolatey:
choco install imagemagick从源码编译(Linux):
./configure
make
sudo make installiOS:
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 基本上是这个赛道的最佳选择。
⚠️ 注意事项
- CVE-2026-45359 漏洞:ImageMagick 7.1.2-22 之前版本存在
connected-components操作的堆缓冲区溢出漏洞,已在 7.1.2-22 修复。如果你在用旧版本,立刻升级到最新版。 - 安全策略默认配置偏宽松:
Open模式下 ImageMagick 允许执行 PS、PDF、HDF 等危险格式的 delegate 命令。生产环境一定要改成Secure模式,防止处理恶意图片触发命令注入。 - 命令行参数繁多:ImageMagick 功能太多,选项有几百个,新手上手曲线陡。建议从
identify、mogrify、magick三个命令开始用起,文档非常齐全。 - Q16 HDRI vs Q8 non-HDRI:默认编译版本是 Q16 HDRI(高精度,内存消耗大)。如果内存不够,可以自己编译 Q8 版本,内存减半但精度也降了。
- 大图处理内存爆炸:处理亿级像素图片时,记得加
-limit memory 2GB之类的限制,否则 ImageMagick 可能把机器内存吃光。 - v6 vs v7 语法差异:如果你看到老教程用
convert,那是 v6 的命令。v7 统一成magick,convert变成了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