← 部落格

如何使用FFmpeg將圖片轉換為JPG、PNG、WebP、GIF格式(2026完整指南)

完整指南:使用FFmpeg在JPG、PNG、WebP和GIF格式之間進行圖片轉換,包含批次轉換、品質控制,以及免費一鍵替代方案。

3 min read

FFmpeg 不只能處理影片——它同樣是強大的圖片格式轉換工具。無論是將 PNG 截圖轉為 JPG、將圖片最佳化為 WebP 格式以利網頁使用,還是從圖片序列製作 GIF,FFmpeg 都能從命令列一手搞定。

當然,如果你不想輸入指令,我們在文末提供了一個免費的一鍵解決方案


前置作業:安裝 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 圖片轉換器

免費下載 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 等專用工具。