imagemagick 在不使用 -extent 的情况下将画布更改为正方形(保留最长边)

Posted

技术标签:

【中文标题】imagemagick 在不使用 -extent 的情况下将画布更改为正方形(保留最长边)【英文标题】:imagemagick change canvas to square without using -extent (retaining the longest edge) 【发布时间】:2021-01-31 13:01:52 【问题描述】:

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

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

所需输出示例:

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

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

mogrify -path squared/ -trim -background white -gravity center quality 75 -squared *.jpg

如何做到这一点?

【问题讨论】:

您使用的是哪个版本的 imagemagick? 【参考方案1】:

如果在 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

【讨论】:

太好了,谢谢。我们使用 v6,我会尽快尝试。 你先生,是一个死气沉沉的冠军。工作一种享受。谢谢。

以上是关于imagemagick 在不使用 -extent 的情况下将画布更改为正方形(保留最长边)的主要内容,如果未能解决你的问题,请参考以下文章

在不破坏动画的情况下调整动画 GIF 文件的大小

如何在不重新压缩 JPEG 的情况下删除 EXIF 数据?

如何在 C# 中使用 imageMagick

求教imagemagick安装方法

如何使用自制软件安装 imagemagick?

如何使用 Imagemagick 替换单个 PDF 页面?