如何使用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 提供最佳的壓縮品質比。在不需擔心瀏覽器相容性的情況下優先選用。否則,相片使用 JPEG,含透明背景的圖形使用 PNG。
將 JPG 轉換為 PNG 能提升畫質嗎? 不能。就像音訊一樣,JPEG 壓縮過程中損失的資訊無法還原,轉換後的 PNG 檔案只會更大,畫質不會有所改善。
WebP 比 JPEG 小多少? 在相同視覺品質下,通常可縮減 25–35%。
FFmpeg 支援 RAW 相機格式嗎? FFmpeg 對 RAW 格式的支援相當有限。若需轉換 RAW 檔案,建議使用 ImageMagick 或 darktable 等專用工具。


