将图像调整大小并将其裁剪为 6x4 至 1024 的宽度

osh*_*nen 7 linux command-line imagemagick image-manipulation

我有一组混合图像,每个图像的分辨率略有不同,纵横比与其他图像略有不同。

我尝试使用以下命令:

convert -resize
Run Code Online (Sandbox Code Playgroud)

和:

convert -crop
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法找出正确的命令来使所有图像的宽度为 1024,纵横比为 6x4,而不会导致图像拉伸或被压扁。

cjm*_*cjm 4

请注意,1024 不能被 3 整除,因此您无法获得精确的 6x4 宽高比。我将其近似为 1024x682。

你想要的命令是

convert in.jpg -resize '1024x682^' -gravity Center -crop 1024x682+0+0 out.jpg
Run Code Online (Sandbox Code Playgroud)

-resize '1024x682^'缩放图像,同时保留纵横比,以便:

  • 宽度 = 1024 且高度 >= 682,或者
  • 高度 = 682 且宽度 >= 1024

在不改变纵横比的情况下只能实现这些标准之一(除非图像已经是 6x4)。

-gravity Center -crop 1024x682+0+0剪切以图像中心为中心的 1024x682 区域。-gravity您可以根据您想要的图像裁剪方式使用不同的方法。

您还可以包含一个-filter选项来控制用于调整图像大小的算法。