0

很简单,我有一个脚本可以在我的照片上调用 imagemagick。

原始图像是 320 x 444,我想创建一些缩小版本但保持相同的纵横比

我使用 imagemagick 调用

convert oldfile.png -resize 290x newfile.png

我想将它缩放到我设定的宽度,但高度会相应地缩放。

我在 3 个单独的命令中执行 80x、160x 和 290x。

最小的 2 产生具有相同原始纵横比的图像,而 290x 则不会。

它产生的图像大小是290 x 402

我不知道为什么那个不能保持纵横比,但其他 2 个尺寸保持它。

有任何想法吗?

4

1 回答 1

1

我认为第三个命令中的问题是请求的大小本身:

  1. 在第一个命令中,两个维度都除以 4:320/4=80444/4=111
  2. 在第二个命令中,两个维度都除以 2:320/2=160444/2=222

444 和 320 只有两个公约数:2 和 4。您已经在前两个命令中使用了这些公约数,所以任何其他(宽度、高度)对都会给您一个稍微不同的纵横比:不可能获得相同的精确值纵横比固定 290。

事实上,虽然您的原始图像的纵横比为1.3875,但对于 290x403 图像,您将获得一个纵横比,1,389655172而对于 290x402 图像,您将获得一个1,386206897比率:固定 290 没有其他维度的值可以为您提供所需的纵横比.

然而,一般而言,Imagemagick 总是试图保持图像的纵横比,正如您可以在 Imagemagick 文档中阅读的那样:

调整大小操作符的参数是图像应该适合的区域。该区域不是图像的最终尺寸,而是图像的最大尺寸。这是因为 IM 试图保留图像的纵横比而不是最终的(除非给出“!”标志),但最终尺寸中的至少一个(如果不是两个)应该与给定图像的参数匹配。所以让我说清楚......调整大小将使图像适合请求的大小。它不填充请求的框大小。

如需进一步参考,请参见此处

于 2013-06-22T13:20:57.833 回答