ROCKI

LEARN · ARTICLE

網站圖片轉 WebP:品質、無損與批次腳本

發布 2026-11-09更新 2026-11-09作者 Rock Lee
網站圖片轉 WebP:品質、無損與批次腳本 封面示意圖

作者:Rock Lee 實測日期:2026-11-09(Asia/Taipei)

為什麼寫這篇

我們的教學頁每篇至少 6 張圖,加上 AI 封面,圖片是頁面裡最大的檔案。網路上常見的建議是「全部轉 WebP 就好」,但轉的時候還有幾個要決定的事:品質設多少?截圖要不要用無損?照片裡的 EXIF(拍攝資訊、GPS)會不會跟著留下?

這篇拿我們網站上真的在用的 11 張 AI 封面和 12 張介面截圖實測,最後附一個今天實際跑過的批次轉檔腳本。

一疊大照片進入壓縮機,另一端出來一疊輕薄的小卡片(示意圖,AI 生成)
一疊大照片進入壓縮機,另一端出來一疊輕薄的小卡片(示意圖,AI 生成)

實測環境

項目內容
工具Python 3、Pillow 12.3.0(支援 WebP 和 AVIF)
素材AI 封面 JPG 11 張(1280×720);介面截圖 PNG 12 張(多數 1920×1350)
對照網站上已上線的 WebP 檔(2026-11-09 讀取)
畫質指標PSNR(和原圖比的訊號雜訊比,數字越高越接近原圖,只當參考)

步驟

1. 先整批試一次:封面和截圖結果完全不同

同一套設定分別套在封面和截圖上,比較 WebP 有損(品質 80)、WebP 無損、AVIF(品質 50)和 JPEG(品質 80)。

23 張圖整批轉檔的結果:封面和截圖適合的格式不一樣
23 張圖整批轉檔的結果:封面和截圖適合的格式不一樣
素材原檔WebP 品質 80WebP 無損AVIF 品質 50JPEG 品質 80
AI 封面 11 張3194.5 KB659.9 KB(省 79.3%)7011.8 KB(大 119.5%)376.2 KB(省 88.2%)1254.8 KB
介面截圖 12 張2445.1 KB1045.9 KB(省 57.2%)744.0 KB(省 69.6%)462.3 KB(省 81.1%)1995.6 KB

兩個重點:

  • 封面(照片、插畫類)千萬別用無損,檔案會變成原本的兩倍多。
  • 截圖用無損反而比有損小(744 KB 對 1045.9 KB),因為截圖大片純色、顏色少,無損壓縮很有效。

AVIF 在兩類都最小,但截圖那組編碼花了 3.61 秒,是 WebP 有損(1.39 秒)的兩倍多。我們網站目前用的是 WebP。

2. 品質要設多少:用一張圖掃一遍

拿一張封面(原檔 269.8 KB)從品質 50 掃到 95:

品質5060707580859095
大小(KB)23.326.731.634.850.871.3121.2209.1
PSNR(dB)36.436.937.537.838.839.841.544.3

80 以上檔案就開始快速變大:從 80 到 90 檔案多了一倍多,PSNR 只多 2.7 dB。這張圖在 75 和 80 之間有一個跳躍,所以品質不是越高越好,要看自己的圖。

實際看局部放大:

局部放大 2 倍比較:截圖文字和 AI 插圖在品質 50、80 和無損下的樣子與整張檔案大小
局部放大 2 倍比較:截圖文字和 AI 插圖在品質 50、80 和無損下的樣子與整張檔案大小

老實說,在 2 倍放大下,我們用眼睛看不太出品質 50 和 80 的差別,文字和插圖都還清楚。我們仍選 80 當預設,是保守做法:PSNR 比 50 高約 2.4 dB,檔案又還在原檔的兩成以內。如果你的圖以插畫為主、很在意大小,可以自己試 70~75。

3. 尺寸比品質更重要

同一張封面,品質固定 80,只改寬度:原尺寸 1280 寬是 50.8 KB,縮到 800 寬是 20.5 KB,480 寬是 9.4 KB。

網站上實際放的檔案也是這樣做:

網站已上線的圖檔:每張封面做 480、800、原尺寸三種 WebP
網站已上線的圖檔:每張封面做 480、800、原尺寸三種 WebP
  • 一張 n8n 教學的封面,480/800/原尺寸三個版本分別是 8.4/17.4/51.9 KB。
  • 一張 2200×1662 的 PNG 截圖(203 KB),網站上放的是 1600 寬的 WebP,58 KB。
  • 網站學習區目前共 116 個 WebP,合計 4.67 MB。

手機上 800 寬就很夠了。先把尺寸縮到實際顯示的大小,再談品質。

4. 寫成批次腳本

把前面的結論寫成一個腳本 to_webp.py:

批次轉檔腳本全文:只縮不放大、PNG 同時試無損取小的、比原檔大就保留原檔
批次轉檔腳本全文:只縮不放大、PNG 同時試無損取小的、比原檔大就保留原檔

規則只有四條:

  1. 寬度超過上限就等比縮小,只縮不放大。
  2. 一律先轉有損 WebP;如果原檔是 PNG,另外試無損,取比較小的那個。
  3. 轉完比原檔還大,就保留原檔。
  4. 不帶 EXIF。

5. 實際跑兩批

兩批實跑:8 張截圖省 69.2%,11 張封面縮到 800 寬省 92.7%
兩批實跑:8 張截圖省 69.2%,11 張封面縮到 800 寬省 92.7%
批次指令參數結果時間
n8n 教學截圖 8 張寬 1600、品質 801508 KB → 464 KB(省 69.2%)2.7 秒
AI 封面 11 張寬 800、品質 803195 KB → 234 KB(省 92.7%)0.7 秒

8 張截圖這次全部選了有損,原因在下一步。

6. 確認 EXIF 有沒有被清掉

照片裡可能帶 GPS 位置。我們做了一張假的測試照(相機型號 DemoCam、GPS 北緯 10 度、東經 100 度),用不同方式轉檔再讀回來:

EXIF 測試:預設轉 WebP 或 JPEG 都不帶 EXIF;明確傳入 exif 參數才會保留
EXIF 測試:預設轉 WebP 或 JPEG 都不帶 EXIF;明確傳入 exif 參數才會保留
轉法EXIF 欄位GPS
原圖(JPG)4 個有
預設轉 WebP0 個無
轉 WebP 時傳入 exif4 個有
預設轉 JPEG0 個無

在 Pillow 12.3.0,預設轉檔不會帶 EXIF;只有明確把 EXIF 傳進去才會保留。其他工具不一定一樣,換工具時要再測一次。

結果

  • 封面、照片類:WebP 有損品質 80,省約 79%;千萬別用無損。
  • 截圖:原尺寸時無損通常比較小,但縮圖之後就不一定(見踩坑 1)。腳本同時試兩種、取小的最省事。
  • 先縮尺寸再壓:11 張封面縮到 800 寬,從 3195 KB 降到 234 KB。
  • 預設不帶 EXIF,GPS 不會外洩;但要自己驗一次。

踩坑紀錄

  1. 截圖縮小後,無損反而變大。 一張 2160×1290 的編輯器截圖,原尺寸時無損 62 KB、有損 78 KB;縮到 1600 寬後變成無損 93 KB、有損 54 KB。我們數了圖中不同顏色的數量:原圖 1259 種,縮圖後變 2401 種。縮圖會在邊緣產生很多中間色,對無損壓縮不利。所以第 5 步的 8 張截圖縮到 1600 寬後,全部選了有損。
縮圖前後對照:顏色數從 1259 增加到 2401,無損從 62 KB 變 93 KB
縮圖前後對照:顏色數從 1259 增加到 2401,無損從 62 KB 變 93 KB
  1. 小心意外放大。 品質掃描時我們試了把 1280 寬的封面輸出成 1600 寬,檔案變成 65 KB,比原尺寸還大,畫質也不會更好。腳本因此寫成只縮不放大。
  2. 同一個品質,不同 method 結果不同。 Pillow 的 method 參數(0–6)控制壓縮要花多少力氣。同一張封面品質 80,method 4 是 50.8 KB,局部放大比較用的 method 6 是 44 KB。比較數字時要確認參數一樣。

常見問題

Q1:WebP 和 AVIF 該選哪個? 我們的實測 AVIF 更小(截圖組 462 KB 對 WebP 有損 1046 KB),但編碼比較慢。我們網站目前用 WebP;要換 AVIF 前,建議先確認你的網站框架和目標使用者的瀏覽器都支援。

Q2:品質一定要設 80 嗎? 不一定。80 是我們偏保守的選擇(見第 2 步)。建議拿自己的 2~3 張代表圖掃一遍,選一個看不出差別、又不會太大的值。

Q3:轉 WebP 會讓 SEO 變好嗎? 這篇沒有測 SEO。可以確定的是圖片變小、頁面載入的資料變少;本系列 Lighthouse 那篇裡,頁面最大的元素就是封面圖。

Q4:原檔要留著嗎? 要。WebP 有損是不可逆的,之後要改尺寸或換格式,都應該從原檔重新轉,不要拿 WebP 再轉一次。

複製這段給你的 AI agent

目標:把我指定資料夾裡的 JPG/PNG 批次轉成 WebP,輸出到新資料夾,並回報省了多少。

前提與禁止事項:
- 只讀來源資料夾,輸出到另一個新資料夾;不要覆蓋、移動或刪除任何原檔。
- 用 Python 和 Pillow(記下版本號),不要上傳圖片到任何線上服務、不要安裝付費工具、不要部署。
- 不要保留 EXIF。

步驟:
1. 寫 to_webp.py,參數:來源資料夾、輸出資料夾、最大寬度(預設 1600)、品質(預設 80)。
2. 規則:寬度超過上限才等比縮小(用 LANCZOS),不放大;先存有損 WebP;若原檔是 PNG,另外試無損,取較小者;結果比原檔大就不輸出、標記「保留原檔」。
3. 每張印出:檔名、原大小、新大小、選了有損或無損、輸出寬度;最後印出總計、節省百分比、耗時。
4. 從輸出中挑 1 張照片類、1 張截圖類,局部放大 2 倍和原圖並排存成一張比較圖,讓我目視確認。
5. 做一張帶假 EXIF(含 GPS)的測試圖,轉檔後讀回,確認 EXIF 欄位數為 0。

驗收:原檔數量和大小完全沒變;輸出資料夾每張都比原檔小或有「保留原檔」紀錄;EXIF 測試結果為 0 個欄位;附上比較圖。