ffmpeg - 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 表达式评估有一个min
功能,您可以使用它使事情变得非常简单:
crop=min(in_w\,in_h):out_w
允许输出高度引用输出宽度,这样可以节省重复表达式,x 和 y 偏移量默认为(in_w-out_w)/2
和 ,(in_h-out_h)/2
因此如果您不指定任何内容,则默认情况下会居中(相等裁剪)
推荐阅读
- numpy - 重塑坐标列表
- javascript - 使用 React 测试库获取数据的测试组件
- android - 将产品风格与多个 Firebase 应用程序一起使用
- hedera-hashgraph - 在 Hedera 网络上提交交易时出现 TRANSACTION_OVERSIZE 错误
- sql-server - 如何使用条件语句在表之间进行连接
- javascript - JavaScript - 是否可以通过引用复制原始对象属性?
- linq - linq 查询本身不返回任何内容,但数据显示何时添加了连接。我究竟做错了什么?
- android - “粘贴”有时在 Android 上的 Flutter TextFormField 中不可用
- csv - 内容安全策略 (CSP) 设置阻止下载 SCV 文件
- javascript - TinyMce 在动态创建的文本区域上不可编辑和点击