FFmpeg批处理中如何为高度不足720px的图片添加底部白边填充?
FFmpeg 图片高度自适应补白实现方案
核心实现逻辑
该需求可通过FFmpeg内置的pad画布扩展滤镜直接实现,无需使用scale(易引发图片拉伸变形)、crop(易裁切有效内容)类操作,执行逻辑完全匹配要求:
- 自动读取单张输入图片的实时高度值
- 当图片高度 <720px时:保持原图片宽高、比例完全不变,仅在画布底部补充对应高度的纯白色空白,最终总高度拉至720px
- 当图片高度 ≥720px时:画布尺寸与原图片完全重合,不对像素做任何修改
单图测试命令
直接在命令行执行即可验证效果:ffmpeg -i 输入图片路径.jpg -vf "pad=width=iw:height='if(lt(ih,720),720,ih)':x=0:y=0:color=white" 输出图片路径.jpg
参数说明
iw/ih:FFmpeg内置变量,分别指代输入图片的原始宽度、原始高度if(lt(ih,720),720,ih):内置判断逻辑,当原始高度小于720时,取720作为最终画布高度,否则画布高度等于原始高度x=0:y=0:将原始图片固定在画布的左上角位置,所有补充的空白自动落在图片底部color=white:指定补充空白的颜色为纯白色
批量处理脚本
Windows 批处理(.bat)
将脚本放置在待处理图片的同目录下执行,会自动遍历目录内所有常见格式图片,输出带processed_前缀的处理后文件:
@echo off for %%f in (*.jpg *.jpeg *.png) do ( ffmpeg -i "%%f" -vf "pad=width=iw:height='if(lt(ih,720),720,ih)':x=0:y=0:color=white" -q:v 2 "processed_%%f" )
其中-q:v 2参数用于控制JPG输出质量,尽可能接近原画质,避免过度压缩。
Linux/macOS Shell脚本
在待处理图片目录下执行即可完成批量处理:
#!/bin/bash find . -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -exec sh -c ' ffmpeg -i "$0" -vf "pad=width=iw:height=\x27if(lt(ih,720),720,ih)\x27:x=0:y=0:color=white" -q:v 2 "processed_${0}" ' {} \;
注意事项
- 整个判断流程完全由FFmpeg在单图处理时自动完成,不需要提前批量读取所有图片的尺寸信息,执行效率更高
- 处理过程不会对原图片做任何拉伸、裁切操作,仅在高度不足时做底部补白,完全匹配需求
- 如果需要调整补白的颜色,可将
color=white替换为任意十六进制色值,比如color=0xFF0000对应红色补白
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

