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

问题描述 投票:1回答:2

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

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

enter image description here

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

enter image description here

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

enter image description here

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

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

image imagemagick
2个回答
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脚本中,将单个百分号“%”设置为双精度“%%”。


2
投票

你没有说你正在使用哪个版本的Imagemagick会对答案产生影响。

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

magick "input.png" -trim -background none -gravity center -extent %wx%w "output.png"
© www.soinside.com 2019 - 2024. All rights reserved.