跳转至

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 foundImageMagick 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