imagemagick 在不使用 -extent 的情况下将 canvas 更改为正方形(保留最长边)
imagemagick change canvas to square without using -extent (retaining the longest edge)
所以有很多与此类似的问题,但是 none 我可以找到答案:
批量trimming一个文件夹后,如何制作canvas正方形,同时保留最长的边?我不想使用 -extent 并将它们全部设为固定宽度。
所需输出示例:
- 800x1200 变为 1200x1200
- 1000x600 变为 1000x1000
- 1625x1600 变为 1625x1625 等....
例如,如果 -squared 是一个函数,它将类似于:
mogrify -path squared/ -trim -背景白色 -重心质量 75 -squared *.jpg
如何实现?
如果在 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 中,您可以通过使用带有 -distort SRT 的视口计算来执行类似的操作,但您必须添加偏移计算,因为 -gravity 不适用于 -distort 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
所以有很多与此类似的问题,但是 none 我可以找到答案:
批量trimming一个文件夹后,如何制作canvas正方形,同时保留最长的边?我不想使用 -extent 并将它们全部设为固定宽度。
所需输出示例:
- 800x1200 变为 1200x1200
- 1000x600 变为 1000x1000
- 1625x1600 变为 1625x1625 等....
例如,如果 -squared 是一个函数,它将类似于:
mogrify -path squared/ -trim -背景白色 -重心质量 75 -squared *.jpg
如何实现?
如果在 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 中,您可以通过使用带有 -distort SRT 的视口计算来执行类似的操作,但您必须添加偏移计算,因为 -gravity 不适用于 -distort 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