Skip to content
MagickCmd › 命令库

ImageMagick 命令库

四十五条命令,每一条在发布之前都在真实的 ImageMagick 环境里执行过。可搜索、可筛选、点击即复制。

全部 45 条命令

上面的工具支持搜索和按分类筛选,并且跟随 IM7 / IM6 开关。下面是完整清单。

缩放

限制最大宽度,且不放大
处理用户上传最稳的一招:大图缩小,小图原样通过。

magick input.jpg -resize '1600x1600>' -quality 85 output.jpg

精确尺寸的方形缩略图,不变形
先缩放到覆盖,再从中心裁掉溢出部分。

magick input.jpg -resize '400x400^' -gravity center -extent 400x400 output.jpg

适应框内并用白色补边
精确画布尺寸且不裁掉内容 — 电商平台的商品图通常就要求这样。

magick input.jpg -resize 800x800 -background white -gravity center -extent 800x800 output.jpg

按百分比缩放
宽高同时减半。

magick input.jpg -resize 50% output.jpg

像素图放大,不做平滑
Point 采样保留硬边像素,不会糊掉。

magick input.png -filter Point -resize 800% output.png

裁切

从指定位置裁一块矩形
格式为 宽x高+X+Y,从左上角开始计算。

magick input.jpg -crop 400x400+100+50 +repage output.jpg

把一张图切成网格小图
不带偏移就表示“整张切开”。输出名里必须带 %02d 计数器。

magick input.jpg -crop 400x400 +repage tile_%02d.jpg

自动去掉扫描件的白边
不加 -fuzz 的话,真实扫描件上它会毫无反应,因为白边从来不是完全均匀的。

magick input.jpg -fuzz 8% -trim +repage output.jpg

格式

为网页优化 JPEG
清元数据、渐进式渲染、色度二次采样。通常能小 40–60%,肉眼看不出损失。

magick input.jpg -strip -interlace Plane -sampling-factor 4:2:0 -quality 82 output.jpg

用最小体积设置转 WebP
method=6 是 WebP 里最慢、体积最小的档位。

magick input.jpg -quality 80 -define webp:method=6 output.webp

透明 PNG 转 JPEG 而不发黑
JPEG 没有透明通道。不加这些参数,透明像素全部会变黑。

magick input.png -background white -alpha remove -alpha off output.jpg

压小 PNG
无损压缩。想再小一些,加 -colors 256 变成 PNG8。

magick input.png -strip -define png:compression-level=9 output.png

检查你的版本是否支持某种格式
如果这个列表里没有 AVIF、HEIC 或 WebP,加什么参数都没用 — 编译时就没带上对应的库。

magick -list format

PDF

把 PDF 转成印刷分辨率的 PNG
-density 必须写在输入前面。需要装 Ghostscript,并且 policy.xml 没有封掉 PDF。

magick -density 300 input.pdf -background white -alpha remove -quality 100 page-%02d.png

只导出第一页
方括号里的页码从 0 开始,而且必须加引号,否则 shell 会当成通配符。

magick -density 300 'input.pdf[0]' -quality 100 cover.png

把多张图合成多页 PDF
文件名要补零 — shell 按文本排序,page-10 会排在 page-2 前面。

magick page-*.jpg -quality 92 output.pdf

找出封掉 PDF 的策略文件
会打印出 policy.xml 的路径以及当前生效的所有规则。

magick -list policy

水印

角落半透明 logo
括号里的子表达式让透明度只作用于 logo,不影响底图。

magick input.jpg '(' logo.png -alpha set -channel A -evaluate multiply 0.4 +channel ')' -gravity southeast -geometry +24+24 -composite output.jpg

在任何底图上都看得清的文字水印
画两遍,先深后浅,这样文字不会淹没在照片里。

magick input.jpg -gravity southeast -pointsize 42 -fill black -annotate +26+22 '© 2026' -fill white -annotate +24+24 '© 2026' output.jpg

给说明文字加半透明底
-undercolor 支持 8 位十六进制,最后两位就是透明度。

magick input.jpg -gravity south -pointsize 36 -undercolor '#00000080' -fill white -annotate +0+24 'Caption text' output.jpg

效果

带真实透明的圆角
ImageMagick 没有 -round-corners 参数;这里是画出一个角再镜像出其余三个来做遮罩。

magick input.png '(' +clone -alpha extract -draw 'fill black polygon 0,0 0,40 40,0 fill white circle 40,40 40,0' '(' +clone -flip ')' -compose Multiply -composite '(' +clone -flop ')' -compose Multiply -composite ')' -alpha off -compose CopyOpacity -composite output.png

给透明 PNG 加投影
-shadow 会把图片换成它的影子,所以必须在副本上执行。

magick input.png '(' +clone -background black -shadow 60x12+0+8 ')' +swap -background none -layers merge +repage output.png

给区域打马赛克
用 -scale 先缩后放,走最近邻插值,出来是硬边方块。

magick input.jpg -scale 5% -scale 2000% output.jpg

把某个颜色抠成透明
对 logo 和纯色图形有效。用在照片上会到处挖穿。

magick input.png -fuzz 15% -transparent white output.png

颜色

正确加权的黑白
使用亮度加权,不像 -modulate 100,0 那样只是把饱和度归零。

magick input.jpg -colorspace Gray output.jpg

救回发灰发闷的照片
自动色阶,轻微提饱和与对比,再加一点锐化。

magick input.jpg -auto-level -modulate 102,112,100 -unsharp 0x0.8+0.7+0.01 output.jpg

缩小后补回锐度
任何缩小都会让边缘变软。这个量比较保守,不会出白边。

magick input.jpg -resize 1200 -unsharp 0x0.75+0.75+0.008 output.jpg

GIF

用编号帧序列合成 GIF
-delay 和 -loop 必须写在输入帧前面。

magick -delay 8 -loop 0 frame_*.png +dither -colors 128 -layers Optimize output.gif

正确地缩放 GIF 动图
不加 -coalesce 的话,局部帧会被搅成一团乱码。

magick input.gif -coalesce -resize 320x -layers Optimize output.gif

压小体积过大的 GIF
减少调色板和只存变化区域,是压缩 GIF 的两个主要手段。

magick input.gif +dither -colors 64 -layers Optimize output.gif

把 GIF 拆成逐帧图片
-coalesce 导出的是动画实际的画面,而不是存储的差异帧。

magick input.gif -coalesce frame_%03d.png

拼接

把图片拼成竖向长图
-append 是纵向,+append 是横向。

magick shot1.png shot2.png shot3.png -append output.png

带文件名的联系表
montage 是独立程序;IM7 下要写成 `magick montage`。

montage *.jpg -tile 4x -geometry 300x300+8+8 -label %f -background white sheet.jpg

左右对比图
两张高度不同时,先统一缩到同一高度。

magick before.jpg after.jpg +append comparison.jpg

图标

多分辨率 favicon.ico
把所有尺寸打包进一个文件。源图请用至少 256px 的正方形。

magick logo.png -background none -define icon:auto-resize=16,32,48,64,128,256 favicon.ico

查看信息

一行一张,列出文件夹里所有图片的信息
只读文件头,所以对上千个文件也很快。

identify -format '%f %wx%h %m %b\n' *.jpg

不用额外工具直接读 EXIF
打印文件里携带的所有 EXIF 标签。

identify -format '%[EXIF:*]' input.jpg

统计 PDF 页数或 GIF 帧数
打印文件内部包含的图像数量。

identify -format '%n\n' input.gif

我到底装的是哪个版本?
如果 `magick -version` 报错而 `convert -version` 可用,说明你装的是 ImageMagick 6。

magick -version

生成

纯色占位图
-size 必须写在 xc: 源前面。

magick -size 1200x630 xc:'#0d9488' output.png

线性渐变
同类还有:radial-gradient:、plasma:、pattern:。

magick -size 1200x630 gradient:'#0d9488'-'#0b1015' output.png

带尺寸文字的占位图
做布局稿时很方便,不用去找素材图。

magick -size 800x600 xc:'#334155' -gravity center -pointsize 72 -fill white -annotate 0 '800x600' output.png

批量

就地缩放所有 JPEG
mogrify 会覆盖原文件。请先复制一份文件夹 — 没有撤销。

mogrify -resize '1600x1600>' -quality 85 *.jpg

把整个文件夹转成 WebP,保留原图
-path 会写到另一个目录,该目录必须已存在。这是 mogrify 的安全用法。

mogrify -path out -format webp -quality 80 *.jpg

在 bash 里循环处理文件
比 mogrify 更可控,而且完全不动原文件。

mkdir -p out && for f in *.jpg; do magick "$f" -resize 1200 "out/$f"; done

这里说的「已验证」是什么意思

这个库里的每一条命令都在装了 ImageMagick 6.9 和 Ghostscript 的真实机器上,用真实的测试图片跑过,并检查了退出状态。跑不通的命令是被修好,而不是带着一句说明就发出来。

这个标准并不高,但网上大量 ImageMagick 内容其实达不到。流传的错误命令基本集中在这几类:在 IM7 上用 IM6 的语法、几何参数忘了加引号、以及处理 GIF 动图时漏掉 -coalesce

它们跟随版本开关

顶部的 IM7 / IM6 开关会重写本页所有命令。如果你在跟一个为另一个版本写的教程、某条命令跑不通,切一下开关对比一下。

Copied