将图像修剪为最小的正方形

时间:2018-03-04 18:34:21

标签: image imagemagick

我有一个PNG。我希望将它剪裁成尽可能小的图像,同时保持画布正方形。

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

enter image description here

如果我运行convert input.png -trim +repage output.png,则会在所有方面剪裁图像:

enter image description here

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

enter image description here

我考虑过使用-gravity center -extent 512x512 - 但我并不总是知道大小应该是多少。

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

2 个答案:

答案 0 :(得分:2)

您没有说出您使用的Imagemagick版本会对答案产生影响。

这是一个V7答案,你可以在V6上遵循相同的过程,但它可能会更长一些。

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

答案 1 :(得分:2)

这可以通过使用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脚本中,将单个百分号“%”设置为双精度“%%”。