如何縮小 JPEG 檔案又不犧牲畫質
在保留重要細節的前提下把 JPEG 變小的實用做法,以及幾乎所有線上工具都設錯的那一個編碼器選項。
幾乎每一個「壓縮圖片」的工具都在做同一筆默默的取捨:丟掉你一半的色彩資訊,然後賭你不會發現。這種損失通常出現在膚色、紅花、細小的彩色文字,以及任何色彩邊緣強烈的照片上。畫質滑桿救不回來,因為這不是畫質問題。
到底是什麼讓 JPEG 變大
JPEG 用完整解析度儲存亮度,用較低的解析度儲存色彩。這個比例就叫色度取樣:
- 4:4:4 — 色彩也是完整解析度。最忠實,檔案最大。
- 4:2:2 — 色彩的水平解析度減半。對多數照片來說和 4:4:4 幾乎看不出差別。
- 4:2:0 — 色彩在水平和垂直方向都減半。四分之三的色彩資料沒了。
很多相機和圖像生成工具輸出的是 4:4:4。但很多編碼器只要被要求輸出「網頁用」或「壓縮過」的 JPEG,就會悄悄轉成 4:2:0。這個轉換不可逆:色度細節在任何畫質滑桿被考慮之前就已經被丟掉了。
我們在 1,195 張生成式插圖上量測過。用相同畫質重新編碼,但從 4:4:4 降到 4:2:0,最差的色彩通道 SSIM 從 0.984 掉到 0.975,最差的單張圖掉到 0.944。把 JPEG 畫質調高也救不回來。
畫質數字不是百分比
JPEG 畫質 80 並不代表「原圖的 80%」。它只是一個索引,指向 1992 年制定的一張量化步階表,本身沒有任何物理意義。兩個都號稱畫質 80 的編碼器,在相同視覺畫質下檔案大小可以差到 40%。
攝影類內容的實用區間:
- q90–q95 — 並排比對也看不出和原圖的差別。
- q80–q85 — 網頁的常見甜蜜點。通常比 q99 的輸出小 60–75%。
- q60–q70 — 縮圖和背景可用,細緻紋理會出現可見的柔化。
- 低於 50 — 漸層裡的方塊感會很明顯。
這個工具的做法哪裡不同
我們在動你的檔案之前,先從檔頭讀出色度取樣並原樣保留。你的圖是 4:4:4,輸出就還是 4:4:4。多數工具根本無法告訴你檔案原本用的是什麼;我們在你壓縮之前就為每張圖顯示出來。
我們也不拿你的畫質去換沒意義的東西。如果你的檔案已經壓縮過(例如先前用 q70 輸出),再用 q80 重新編碼只會讓檔案變大而不會更好看 —— 編碼器把位元花在描述上一次壓縮留下的痕跡。我們會辨識出這種情況,不作猜測,而是跑一趟無損處理:重寫熵編碼層,影像資料逐位元保持不變。在 baseline JPEG 上通常能省下約 4%。
一套真的有用的流程
- 從 q80 開始,並勾選「保留原始色彩取樣」。
- 在 100% 檢視下,挑一塊色彩細節豐富的地方檢查,不要只看天空。
- 如果還是太大,改用指定大小模式,設你真正需要的上限 —— 例如表單上傳要 200KB。
- 只要還能拿到原始檔,就不要對已經壓縮過的檔案再壓一次。
一切都在你的瀏覽器裡執行。圖片永遠不會上傳。