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

如何使用ImageMagick裁剪图片空白区域并保留内边距?

解决ImageMagick Trim后保留内边距的问题

要实现去除空白区域同时保留指定内边距(不添加彩色边框,直接从原图裁剪扩展区域),可以通过先获取Trim区域的位置和尺寸,再计算扩展内边距后的裁剪范围来完成。

基础实现(内边距不超出原图范围时使用)

假设需要保留10px内边距,执行以下命令:

convert input.png -set option:trim:percent-background 0% -trim +repage \
  -set option:new_width "%[fx:w+20]" -set option:new_height "%[fx:h+20]" \
  -set option:new_x "%[fx:page.x-10]" -set option:new_y "%[fx:page.y-10]" \
  -crop %[new_width]x%[new_height]+%[new_x]+%[new_y] +repage output.png

参数说明:

  • -set option:trim:percent-background 0%:确保Trim完全识别空白背景(若空白非纯透明/纯白,可调整此值)
  • -trim +repage:裁剪到内容边缘,同时记录原裁剪偏移量(page.x/page.y)
  • w+20/h+20:原Trim后的宽高加上2倍内边距(左右/上下各10px)
  • page.x-10/page.y-10:将裁剪起始位置往回偏移10px,实现内边距效果
  • -crop:根据计算的新范围从原图裁剪,+repage重置画布信息

安全版(防止内边距超出原图范围)

如果内边距设置过大,可能导致裁剪范围超出原图边界,此时可以加入范围限制:

convert input.png -set option:orig_w "%[w]" -set option:orig_h "%[h]" \
  -set option:trim:percent-background 0% -trim +repage \
  -set option:pad 10 \
  -set option:new_x "%[fx:max(0, page.x-%[pad])]" \
  -set option:new_y "%[fx:max(0, page.y-%[pad])]" \
  -set option:new_w "%[fx:min(%[orig_w], page.x-%[pad] + w + 2*%[pad])]" \
  -set option:new_h "%[fx:min(%[orig_h], page.y-%[pad] + h + 2*%[pad])]" \
  -crop %[new_w]x%[new_h]+%[new_x]+%[new_y] +repage output.png

只需要修改-set option:pad 10中的10即可调整内边距大小,命令会自动确保裁剪范围不超出原图尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:24:52