使用 ffmpeg 调整图像大小

Posted

技术标签:

【中文标题】使用 ffmpeg 调整图像大小【英文标题】:Use ffmpeg to resize image 【发布时间】:2015-05-02 15:06:09 【问题描述】:

是否可以使用 FFMPEG 调整图像大小?

到目前为止我有这个:

ffmpeg. -i 1.jpg -vf scale=360:240 > 2.jpg

我收到“必须指定至少一个输出文件”的错误消息

有可能吗?

【问题讨论】:

@LordNeckbeard 你很好。我最近才知道:) 【参考方案1】:

感谢@andri-kurnia 的回答。

这个例子还展示了如何调整多个图像的大小(在窗口中):

for %j in (*.jpg) do ffmpeg -i "%j" -vf scale=480:-1 "Small-%~nj.jpg"

此命令将调整文件夹中所有.jpg图像的大小,在保持比例的同时设置宽度480,并在调整大小的图像名称的开头添加“Small-”。 而且我认为对于某些类型,可能需要使用 -2 而不是 -1。对于指定高度,我们可以使用 -1:480 之类的东西。

【讨论】:

【参考方案2】:

如果你想保持纵横比,你可以这样做 -

./ffmpeg -i 1.jpg -vf scale="360:-1" 2.jpg

或者如果你想根据输入的宽度和高度调整大小,假设你可以做输入宽度和高度的一半 -

./ffmpeg -i 1.jpg -vf scale="iw/1:ih/2" 2.jpg

在哪里

iw: input width
ih: input height

【讨论】:

【参考方案3】:

将图像缩放到宽度:320px 和高度:240px 的边界框。

ffmpeg -i src_image_path -vf 'scale=if(gte(a\,320/240)\,min(320\,iw)\,-2):if(gte(a\,320/240)\,-2\,min(240\,ih))' dst_image_path

a: aspect ratio
iw: in width
ih: in height

如果 src 图像大小在边界框内,则不要对其进行调整大小。 如果图像的纵横比大于 320/240 并且宽度大于 320,则将宽度调整为 320 并保持纵横比。 如果图像的纵横比小于 320/240 并且高度大于 240,则将高度调整为 240 并保持纵横比。

【讨论】:

【参考方案4】:

还可以调整图像的大小以适应某些尺寸和信箱其余部分。

示例命令:

ffmpeg -i IN.png -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" OUT.jpg

更多详情请见this answer。

【讨论】:

经过长时间的在线搜索并且不知道这被称为“信箱”,这个答案让我免于很多麻烦!非常感谢!【参考方案5】:

你可以试试这个:

ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png

我从source得到这个

注意:缩放过滤器还可以在保留纵横比的同时自动计算尺寸:scale=320:-1,或scale=-1:240

【讨论】:

嗨,打败你了。这是我刚刚发现的。但是,当你得到正确答案并且你给了我你的时间我给你打勾:) 缩放过滤器还可以在保留纵横比的同时自动计算尺寸:scale=320:-1,或scale=-1:240 这会导致我的图像损坏。只是一堆线条和颜色。 jpg转jpg 有趣,但 png 输出工作正常。 JPG 很无聊。 如果我想保持输出文件名不变怎么办?我可以有一个更短的命令吗?谢谢。

以上是关于使用 ffmpeg 调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG调整音频文件音量大小

ffmpeg调整缩放裁剪视频的基础

在窗口调整大小时调整图像地图大小

PHP 如何使用PHP调整图像大小 - 图像大小调整脚本

如果调整图像大小,Jcrop 问题 - Jquery

Firebase 图像大小调整扩展。引用调整大小的图像