无裁剪 canvas 使用 ImageMagick 增加到 2:1 纵横比
No-crop canvas increase to 2:1 aspect ratio with ImageMagick
我的情况是我有一组宽度和高度可变的图像,我需要确保这些图像符合 2:1.
的宽高比
我唯一可以做的假设是这些图像的纵横比大于 2,所以我需要扩展 canvas。
使用 ImageMagick 我可以做到这一点:
magick input.jpg -background black -gravity north -extent 2:1 output.jpg
但是这种裁剪而不是根据需要添加 canvas。是否有避免裁剪的选项,即强制图像填充?记住我事先不知道图像分辨率。
当然,如果使用更复杂的脚本,我可以提取图像尺寸并计算所需的分辨率,但我尽量让事情变得简单。
P.S.: 图像来自激光扫描仪,将用于 360 全景查看器,因此需要在不裁剪的情况下满足纵横比。
使用 ImageMagick v7,您可以进行一些内联计算,这些计算将调整 -extent
操作的结果,以将任何大小的输入填充到 2:1 比率。以这个命令为例...
magick input.png -gravity center -extent "%[fx:max(w,h*2)]x%[fx:max(w/2,h)]" result.png
这将用黑色填充任何额外的 space。在 extent 操作之前添加 -background <somecolor>
以更改填充颜色。
我的情况是我有一组宽度和高度可变的图像,我需要确保这些图像符合 2:1.
的宽高比我唯一可以做的假设是这些图像的纵横比大于 2,所以我需要扩展 canvas。
使用 ImageMagick 我可以做到这一点:
magick input.jpg -background black -gravity north -extent 2:1 output.jpg
但是这种裁剪而不是根据需要添加 canvas。是否有避免裁剪的选项,即强制图像填充?记住我事先不知道图像分辨率。
当然,如果使用更复杂的脚本,我可以提取图像尺寸并计算所需的分辨率,但我尽量让事情变得简单。
P.S.: 图像来自激光扫描仪,将用于 360 全景查看器,因此需要在不裁剪的情况下满足纵横比。
使用 ImageMagick v7,您可以进行一些内联计算,这些计算将调整 -extent
操作的结果,以将任何大小的输入填充到 2:1 比率。以这个命令为例...
magick input.png -gravity center -extent "%[fx:max(w,h*2)]x%[fx:max(w/2,h)]" result.png
这将用黑色填充任何额外的 space。在 extent 操作之前添加 -background <somecolor>
以更改填充颜色。