如何使用 FFmpeg 将图片转换为 JPG、PNG、WebP、GIF(2026 年指南)
完整指南:使用 FFmpeg 在 JPG、PNG、WebP 和 GIF 格式之间转换图片,包括批量转换、质量控制,以及免费的一键替代方案。
FFmpeg 不只是处理视频的工具——它同样是强大的图片格式转换利器。无论是将 PNG 截图转换为 JPG、将图片优化为 WebP 格式用于网页,还是从图片序列生成 GIF,FFmpeg 都能在命令行中一键搞定。
当然,如果你不喜欢输入命令,文末还有一个免费的一键解决方案。
前提条件:安装 FFmpeg

macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
Windows:
从 ffmpeg.org 下载,解压后将 bin 目录添加到系统 PATH。
基础图片格式转换
PNG 转 JPG
ffmpeg -i input.png -q:v 2 output.jpg
-q:v 2— JPEG 质量(1 = 最佳,31 = 最差),推荐使用 2–5。
JPG 转 PNG
ffmpeg -i input.jpg output.png
PNG 是无损格式,无需指定质量参数。
PNG/JPG 转 WebP
ffmpeg -i input.png -quality 80 output.webp
-quality 80— WebP 质量(0–100),75–85 是质量与体积的良好平衡点。
WebP 转 PNG
ffmpeg -i input.webp output.png
WebP 转 JPG
ffmpeg -i input.webp -q:v 2 output.jpg
BMP 转 PNG
ffmpeg -i input.bmp output.png
TIFF 转 JPG
ffmpeg -i input.tiff -q:v 2 output.jpg
处理 GIF
图片序列转 GIF
将一系列图片(frame001.png、frame002.png……)转换为动态 GIF:
ffmpeg -framerate 10 -i frame%03d.png -vf "scale=480:-1:flags=lanczos" output.gif
-framerate 10— 每秒 10 帧frame%03d.png— 匹配 frame001.png、frame002.png 等文件名scale=480:-1— 宽度缩放至 480px,高度自动适配flags=lanczos— 高质量缩放算法
视频转 GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" -loop 0 output.gif
GIF 转图片序列
提取 GIF 中的每一帧:
ffmpeg -i input.gif frame%03d.png
GIF 转 MP4
GIF 文件体积庞大——转换为 MP4 可缩小 90% 以上:
ffmpeg -i input.gif -movflags +faststart -pix_fmt yuv420p output.mp4
高级选项
控制 JPEG 质量
ffmpeg -i input.png -q:v 5 output.jpg
-q:v | 质量 | 文件大小 |
|---|---|---|
| 1 | 最佳 | 最大 |
| 2–3 | 非常好 | 较大 |
| 5 | 良好 | 中等 |
| 10 | 可接受 | 较小 |
| 31 | 最差 | 最小 |
控制 WebP 质量
# 有损 WebP
ffmpeg -i input.png -quality 85 output.webp
# 无损 WebP
ffmpeg -i input.png -lossless 1 output.webp
调整图片尺寸
缩放至指定宽度(保持宽高比):
ffmpeg -i input.png -vf "scale=800:-1" output.png
缩放至指定尺寸:
ffmpeg -i input.png -vf "scale=800:600" output.jpg
更改色彩空间
转换为灰度图:
ffmpeg -i input.png -vf "format=gray" output.png
批量转换
批量将 PNG 转换为 JPG
Linux/macOS:
for f in *.png; do
ffmpeg -i "$f" -q:v 2 "${f%.png}.jpg"
done
批量将 JPG 转换为 WebP
for f in *.jpg; do
ffmpeg -i "$f" -quality 80 "${f%.jpg}.webp"
done
Windows(PowerShell):
Get-ChildItem *.png | ForEach-Object {
ffmpeg -i $_.Name -q:v 2 ($_.BaseName + ".jpg")
}
常见错误与解决方法
“输出文件为空白或全黑” 部分格式需要显式指定像素格式:
ffmpeg -i input.png -pix_fmt rgb24 output.jpg
“GIF 输出颜色很差” GIF 仅支持 256 色。使用调色板可提升质量:
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
“无法确定格式” 显式指定格式:
ffmpeg -f image2 -i input.bmp output.png
跳过终端:改用 WaveSpeed Desktop
用 FFmpeg 转换单张图片还算可以。但如果要批量转换,同时控制质量、格式和尺寸?那很快就会变得繁琐。
WaveSpeed Desktop 内置了图片转换器,让这一切轻松无比:
- 拖放一张或多张图片
- 选择输出格式(JPG、PNG、WebP、GIF)
- 点击转换——搞定
无需 FFmpeg,无需终端,无需记忆质量参数。

免费下载 WaveSpeed Desktop: https://github.com/WaveSpeedAI/wavespeed-desktop/releases
常见问题
网页端最佳图片格式是什么? WebP 提供最佳的压缩比与画质平衡。在不需要考虑浏览器兼容性时优先使用 WebP。其他情况下,照片使用 JPEG,带透明通道的图形使用 PNG。
将 JPG 转换为 PNG 能提升画质吗? 不能。与音频类似,JPEG 压缩过程中丢失的信息无法还原。转换后的 PNG 文件只会更大,画质并不会提升。
WebP 比 JPEG 小多少? 在相同视觉质量下,通常小 25–35%。
FFmpeg 能处理相机 RAW 文件吗? FFmpeg 对 RAW 格式的支持有限。如需 RAW 转换,建议使用 ImageMagick 或 darktable 等专用工具。


