You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ImageMagick按固定宽高比居中最小裁剪任意尺寸图像?

如何让ImageMagick强制按指定宽高比居中最小裁剪(不受原图横竖影响)

默认使用-crop 宽:高参数时,ImageMagick会自动对比原图比例与指定比例,若原图为竖版(高度大于宽度),会自动改用逆比例裁剪(比如指定16:9时实际按9:16裁剪)。要实现不管原图横竖,都严格按指定比例从中心最小裁剪,可以通过ImageMagick的fx表达式动态计算裁剪尺寸,强制锁定目标比例。

核心命令(以16:9比例为例)

# 新版本ImageMagick(7+)用magick
magick input-image.jpg -gravity center -crop "%[fx:h*16/9>w?w:h*16/9]x%[fx:w*9/16>h?h:w*9/16]+0+0" output-image.jpg

# 旧版本ImageMagick(6及以下)用convert
convert input-image.jpg -gravity center -crop "%[fx:h*16/9>w?w:h*16/9]x%[fx:w*9/16>h?h:w*9/16]+0+0" output-image.jpg

命令解释

  • -gravity center:指定从图像中心开始裁剪
  • %[fx:...]:通过ImageMagick的内置表达式动态计算裁剪尺寸:
    • 计算裁剪宽度:h*16/9>w?w:h*16/9
      • 先按16:9比例计算对应原图高度的理想宽度(h*16/9),如果这个值大于原图实际宽度,说明原图宽度不足,直接保留原图宽度;否则用计算出的理想宽度作为裁剪后的宽度。
    • 计算裁剪高度:w*9/16>h?h:w*9/16
      • 先按16:9比例计算对应原图宽度的理想高度(w*9/16),如果这个值大于原图实际高度,说明原图高度不足,直接保留原图高度;否则用计算出的理想高度作为裁剪后的高度。
  • +0+0:裁剪位置无偏移,确保中心对齐

适配其他比例的方法

如果需要裁剪为其他比例(比如4:3),只需替换命令中的比例数值:

# 4:3比例裁剪示例
magick input-image.jpg -gravity center -crop "%[fx:h*4/3>w?w:h*4/3]x%[fx:w*3/4>h?h:w*3/4]+0+0" output-image.jpg

内容的提问来源于stack exchange,提问作者user782860

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:27:39