首页 > 解决方案 > FFMPEG - 裁剪图像,使图像的高度和宽度相等

问题描述

使用 ffmpeg,我希望能够裁剪图像以使尺寸相等。例如,如果我有一个 1600x1000 的输入图像,裁剪后它应该是 1000x1000(因为 1000 是两个维度中最小的)。裁剪图像时,应从两侧均匀裁剪。

一些示例:输入图像:1600x1000 -> 从左侧裁剪 300 像素,从右侧裁剪 300 像素。最终图像 1000x1000。

输入图像:1100x1500 -> 从顶部裁剪 200 像素,从底部裁剪 300 像素。最终图像 1100x1100。

我可以使用下面的命令来裁剪左右或底部和顶部或两者兼而有之。但问题是我只想裁剪最大的维度。有没有办法知道最大的维度?

crop=in_w-in_h/2:in_h-in_w/2

标签: ffmpeg

解决方案


ffmpeg 表达式评估有一个min功能,您可以使用它使事情变得非常简单:

crop=min(in_w\,in_h):out_w

允许输出高度引用输出宽度,这样可以节省重复表达式,x 和 y 偏移量默认为(in_w-out_w)/2和 ,(in_h-out_h)/2因此如果您不指定任何内容,则默认情况下会居中(相等裁剪)


推荐阅读