Skip to content
MagickCmd › ImageMagick 裁切命令生成器

ImageMagick 裁切命令生成器

生成 ImageMagick 裁切命令:按坐标裁、居中裁到指定尺寸、按比例裁、切成网格、自动去除纯色边框。并解释为什么必须加 +repage。

-crop 根据调用方式不同,实际上做的是四件很不一样的事;而且它会留下一个隐藏状态 —— 虚拟画布 —— 这正是后续操作出问题的主要原因。

按坐标裁一块矩形

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

几何格式是 宽 x 高 + X + Y,从左上角开始计算,原点是 +0+0

居中裁到精确尺寸

如果源图有可能比目标还小,直接用 -crop 就错了 —— 你会得到一张比要求更小的图。正确做法是先缩放到覆盖,再裁:

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

这样永远输出精确的 400×400,不变形,任何尺寸的输入都能处理。把 center 改成 north 可以让裁切偏向顶部 —— 拍人像时很有用,居中裁经常把头切掉。

按宽高比裁切

magick input.jpg -gravity center -crop 16:9 +repage output.jpg

ImageMagick 7 可以直接接一个比例,自动算出最大的匹配矩形。ImageMagick 6 不支持这个写法 —— IM6 上请用上面的居中裁切配具体像素值。

把一张图切成网格

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

不带 +X+Y 偏移时,-crop 会把整张图切成网格。输出文件名必须带计数器(比如 %02d),否则每一块都会覆盖上一块。写在 Windows 的 .bat 文件里时,这个计数器要写成 %%02d

自动去除纯色边框

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

单独用 -trim 对真实照片和扫描件几乎从来不管用,因为边框颜色不可能完全均匀。-fuzz 容差才是让它真正生效的关键 —— 从 5–10% 开始往上调。

为什么需要 +repage

裁切并不是真的把周围的部分删掉,它记录了一个偏移到「虚拟画布」里,用来记住这块是从哪儿裁出来的。会保存偏移的格式(GIF 和 PNG)会带着这个信息,于是:

  • 裁出来的 PNG 可能显示时带着莫名其妙的留白。
  • 后续的 -composite-extent 会落在错误的位置。
  • identify 报出来的画布尺寸和实际像素尺寸对不上。

+repage 就是用来丢掉这个偏移的。除非你确实需要保留画布,否则每次裁切后都加上它。

裁切和缩放一次完成

magick input.jpg -crop 1200x1200+200+100 +repage -resize 400x400 output.jpg

顺序有意义:操作类参数从左到右依次执行,所以这条是先裁后缩。


相关页面

Copied