使用FFmpeg调整图像大小

85
可以使用FFmpeg来调整图像的大小吗?
到目前为止,我有以下内容:
ffmpeg. -i 1.jpg -vf scale=360:240 > 2.jpg

我收到了错误信息:
至少需要指定一个输出文件
这可能吗?
5个回答

169
你可以试试这个:
ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png

我从source得到了这个。

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


嗨,我比你先找到了答案。但是,由于你回答正确并且花了时间给我解答,我会给你一个勾勾 :) - Andrew Simpson
28
比例缩放滤镜可以自动计算保持原始比例的维度大小: 使用scale=320:-1表示宽度为320,高度自适应;使用scale=-1:240则表示高度为240,宽度自适应。 - llogan
这对我来说导致了一张损坏的图像。只是一堆线条和颜色。jpg转jpg。 - Tyguy7
2
有趣的是,PNG输出正常工作。JPG出了问题。 - Tyguy7
如果我想保持输出文件名不变怎么办? 我可以使用更短的命令吗?谢谢。 - Alston
显示剩余2条评论

35

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

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

2
我发现这非常有用。需要注意的是,将高度和宽度同时减半的正确用法是-vf scale="iw/2:ih/2"。 - charles young

11

可以将图像调整大小以适应特定尺寸,并在其余部分上添加黑边。

示例命令:

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

请参阅此答案以获取更多详细信息。

1
经过长时间的在线搜索,不知道这被称为“信箱式缩放”,这个答案让我免去了很多麻烦!非常感谢! - kafman
1
谢谢,这也是我在网上找到的唯一一个正确适用于多张图片的答案。 - jjxtra

8

感谢 @andri-kurnia 的回答。

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

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

该命令将调整该文件夹内所有后缀名为.jpg的图像大小,设置宽度为480并保持纵横比,同时在调整后的图像名称前添加“Small-”。对于某些类型,可能需要使用“-2”而不是“-1”。如果要指定高度,可以使用类似于“-1:480”的方式。

5

将图像缩放到宽度为320像素,高度为240像素的边框内。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接