【问题标题】:Trim image to smallest square将图像修剪到最小的正方形
【发布时间】:2026-01-10 15:05:01
【问题描述】:

我有一个 PNG。我想在保持画布正方形的同时将其修剪为尽可能小的图像。

例如,我有一个透明背景的非方形图像:

如果我运行convert input.png -trim +repage output.png,图像会被四面修剪:

我想要一个正方形图像,其中修剪图像的最长边是正方形的高度和宽度。例如:

我考虑过使用-gravity center -extent 512x512 - 但我并不总是知道该范围的大小。

如何获得修剪后图像的最长边,并据此调整画布大小?

【问题讨论】:

    标签: image imagemagick


    【解决方案1】:

    这可以通过使用 FX 表达式来设置页面几何形状来完成...

    convert input.png -trim -background none \
       -set page "%[fx:max(w,h)]x%[fx:max(w,h)]+%[fx:(max(w,h)-w)/2]+%[fx:(max(w,h)-h)/2]" \
       -coalesce output.png
    

    修剪输入并计算宽度或高度的最大值以确定正方形的尺寸。然后它设置几何以将输入图像定位在正方形的中心。 “-coalesce”重新组合输入以符合画布大小和几何形状。

    这适用于横向或纵向的图像。

    要将其用作 Windows 命令,请将续行的反斜杠“\”更改为插入符号“^”。在 Windows BAT 脚本中,将单个百分号“%”变为双精度“%%”。

    【讨论】:

    • 太完美了!谢谢:-)
    【解决方案2】:

    您没有说明您使用的 Imagemagick 版本会影响答案。

    这是一个 V7 答案,您可以在 V6 上遵循相同的过程,但它可能有点冗长。

    magick "input.png" -trim -background none -gravity center -extent %wx%w "output.png"
    

    【讨论】:

    • 我刚刚升级到 7 - 您的解决方案运行良好。谢谢!
    最近更新 更多