我正在尝试使用 ffmpeg 生成图像缩略图。该文件夹包含具有不同分辨率的各种 jpeg 文件。
ffmpeg -y -i input1.jpg -filter_complex "scale=(iw*sar)*max(238/(iw*sar)\,358/ih):ih*max(238/(iw*sar)\,358/ih), crop=238:358" thumbnail.jpg
它适用于文件夹中的大多数图像,但crop=238:358
会因某些图像分辨率而失败:
input1.jpg: 500x800
调整大小和裁剪成功
input2.jpg: 470x800
调整大小和裁剪失败:
宽度“238”或高度“358”的无效太大或非正尺寸
当缩放图像得到237px
而不是238px
由于纵横比缩放时,就会发生问题。
由于这是一个处理一堆文件的脚本,我正在寻找一个可以处理所有图像分辨率的解决方案
缩放过滤器会将表达式的结果截断为整数,并且表达式可能会产生例如 237.999,它会被截断为 237。解决方法是稍微增加系数,因此
ffmpeg -y -i input1.jpg -vf "scale=(iw*sar)*max(238.1/(iw*sar)\,358.1/ih):ih*max(238.1/(iw*sar)\,358.1/ih), crop=238:358" thumbnail.jpg