imagemagick 将画布更改为正方形而不使用-extent(保留最长边)

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

所以有很多与此类似的问题,但我找不到能回答这个确切场景的问题:

批量修剪文件夹中的图像后,如何使画布成为正方形,同时保留最长的边缘?我不想使用 -extent 并使它们全部具有固定宽度。

所需输出的示例:

  • 800x1200 变为 1200x1200
  • 1000x600 变为 1000x1000
  • 1625x1600 变成 1625x1625 等等......

例如,如果 -squared 是一个函数,它会是这样的:

mogrify -路径平方/ -修剪 -背景白色 -重心质量 75 -平方 *.jpg

如何实现这一目标?

imagemagick
2个回答
2
投票

如果在 ImageMagick 7 上,您可以使用 -extent 执行以下操作以获得 w 和 h 的最大值。

输入:

magick barn.jpg -background black -gravity center -extent "%[fx:max(w,h)]x%[fx:max(w,h)]" x.png

在 ImageMagick 6 中,您可以通过将视口计算与 - Distortion SRT 一起使用来执行类似的操作,但您必须添加偏移计算,因为 -gravity 不适用于 - Distortion SRT。

convert barn.jpg -set option:distort:viewport "%[fx:max(w,h)]x%[fx:max(w,h)]+%[fx:(w-max(w,h))/2]+%[fx:(h-max(w,h))/2]" -virtual-pixel black -filter point -distort SRT 0 +repage y.png


0
投票

它对我不起作用。我正在使用 IM 7

© www.soinside.com 2019 - 2024. All rights reserved.