ImageMagick 命令行图像处理
一句话概述:ImageMagick 是命令行图像处理工具,支持 200+ 种格式,能批量转换、缩放、裁剪、拼接、加水印,是图片处理的 FFmpeg。
核心知识点
| 概念 | 白话解释 |
|---|
| ImageMagick | 图像处理瑞士军刀 = 命令行版 Photoshop |
| magick | 主命令 = ImageMagick 7 的统一入口 |
| convert | 转换命令 = ImageMagick 6 的核心命令 |
| identify | 查看信息 = 显示图片尺寸/格式/颜色等 |
| mogrify | 批量修改 = 直接修改原文件(覆盖) |
| composite | 合成 = 叠加图片(水印等) |
安装
# Linux
sudo apt install imagemagick # Ubuntu/Debian
# macOS
brew install imagemagick # Homebrew
# 验证
magick --version # ImageMagick 7
convert --version # ImageMagick 6(旧版兼容)
# 注意:ImageMagick 7 用 magick 命令,6 用 convert 命令
常用操作
# === 查看图片信息 ===
magick identify image.png # 基本信息
magick identify -verbose image.png # 详细信息
# === 格式转换 ===
magick input.png output.jpg # PNG → JPG
magick input.bmp output.png # BMP → PNG
magick input.tiff output.pdf # TIFF → PDF
# === 缩放 ===
magick input.png -resize 800x600 output.png # 缩放到 800x600
magick input.png -resize 50% output.png # 缩小到 50%
magick input.png -resize 800x output.png # 宽度 800,高度自适应
# === 裁剪 ===
magick input.png -crop 400x300+100+50 output.png # 裁剪 400x300,从(100,50)开始
magick input.png -gravity center -crop 800x600+0+0 output.png # 居中裁剪
# === 旋转 ===
magick input.png -rotate 90 output.png # 顺时针旋转 90 度
magick input.png -rotate -90 output.png # 逆时针旋转 90 度
# === 质量压缩 ===
magick input.png -quality 85 output.jpg # 设置 JPEG 质量(1-100)
magick input.png -strip output.png # 去除元数据(减小体积)
# === 添加文字水印 ===
magick input.png \
-gravity southeast \ # 右下角
-pointsize 24 \ # 字号
-fill "rgba(255,255,255,0.5)" \ # 半透明白色
-annotate +10+10 "© 彭文强" \ # 水印文字
output.png
# === 拼接图片 ===
magick input1.png input2.png +append output.png # 水平拼接
magick input1.png input2.png -append output.png # 垂直拼接
# === 批量处理 ===
magick mogrify -resize 800x600 -format jpg *.png # 批量转 JPG + 缩放
magick mogrify -quality 80 *.jpg # 批量压缩(⚠️覆盖原文件)
# === 创建缩略图 ===
magick input.png -thumbnail 200x200^ \ # 填充模式缩放
-gravity center -extent 200x200 \ # 居中裁剪
thumb.png
# === 生信常用:拼图 ===
magick montage fig1.png fig2.png fig3.png fig4.png \ # 拼接4张图
-geometry 400x300+5+5 \ # 每张 400x300,间距 5px
-tile 2x2 \ # 2x2 排列
combined.png
常见报错
| 报错 | 原因 | 解决 |
|---|
not authorized | 安全策略限制 | 编辑 /etc/ImageMagick-7/policy.xml 调整策略 |
cache resources exhausted | 内存不足 | 加 -limit memory 1GiB 或处理小图 |
unknown image file format | 不支持该格式 | 检查格式,可能需要额外库 |
convert: not found | ImageMagick 7 改命令了 | 用 magick 代替 convert |
速查表
# 基本语法
magick <input> [操作...] <output> # 单文件处理
magick mogrify [操作...] *.ext # 批量处理(覆盖原文件)
magick montage <files> [选项] <output> # 拼接
# 常用选项
# -resize WxH 缩放
# -crop WxH+X+Y 裁剪
# -rotate N 旋转
# -quality N JPEG 质量(1-100)
# -strip 去除元数据
# -gravity center 定位参考点
# +append 水平拼接
# -append 垂直拼接
# -annotate 添加文字
# -border N 添加边框
# -format ext 指定输出格式
# -thumbnail WxH^ 生成缩略图
# 生信实用:论文拼图
magick montage *.png -geometry +5+5 -tile 3x2 figure.png