Skip to content
MagickCmd › 几何参数

ImageMagick 几何参数速查

ImageMagick 里最容易踩坑的地方:几何参数后面那个符号,决定了完全不同的行为。

写法含义实际发生什么
800x600适应框内缩小到宽高都放得进为止。保持比例,所以通常有一边会小于 800×600。
800x600!强制精确尺寸忽略比例直接拉伸。几乎不会是你想要的。
800x600^填满框,允许溢出缩放到宽高都至少达到 800×600。配合 -gravity center -extent 800x600 裁掉溢出。
800x600>仅当更大时缩小本来就更小的图原样通过。处理用户上传时的安全默认。
800x600<仅当更小时放大本来就更大的图原样通过。
50%按原图百分比两条边同时缩放。写成 50%x25% 可以分别控制。
1000000@按总像素数限制的是面积而不是宽或高 — 适合形状各异的一批图。
800仅指定宽度高度按原比例自动计算。
x600仅指定高度前面那个 x 才让它变成高度。漏掉它是最常见的 ImageMagick 错误。
800x600+30+20尺寸加偏移用于 -crop、-extent、-geometry。偏移从左上角算起;设了 -gravity 则从锚点算起。
+24+24仅偏移配合 -gravity southeast 时,表示从右下角向内 24px。

为什么值得把这个搞清楚

ImageMagick 的困惑基本都能追溯到两件事 —— 参数顺序,和几何后缀。上面这张表讲的是第二件。五个字符,每一个都把 -resize 变成不同的操作,而参数名里一点都看不出来。

几何语法不只属于 -resize-crop-extent-geometry-border-splice-thumbnail 读的都是同一套语法,只是不是每个操作都支持全部后缀。

记得加引号

^ > < ! 全都是 shell 元字符。在 bash 里不加引号,-resize 800x600> 会被当成重定向:你会得到一张被无条件缩放的图,外加一个叫 600 的空文件,而且不报错。各 shell 的规则见引号问题那一页

Copied