CompressDog

如何縮小 JPEG 檔案又不犧牲畫質

在保留重要細節的前提下把 JPEG 變小的實用做法,以及幾乎所有線上工具都設錯的那一個編碼器選項。

幾乎每一個「壓縮圖片」的工具都在做同一筆默默的取捨:丟掉你一半的色彩資訊,然後賭你不會發現。這種損失通常出現在膚色、紅花、細小的彩色文字,以及任何色彩邊緣強烈的照片上。畫質滑桿救不回來,因為這不是畫質問題。

到底是什麼讓 JPEG 變大

JPEG 用完整解析度儲存亮度,用較低的解析度儲存色彩。這個比例就叫色度取樣:

很多相機和圖像生成工具輸出的是 4:4:4。但很多編碼器只要被要求輸出「網頁用」或「壓縮過」的 JPEG,就會悄悄轉成 4:2:0。這個轉換不可逆:色度細節在任何畫質滑桿被考慮之前就已經被丟掉了。

我們在 323 張圖上量測過:用相同畫質重新編碼,只把 4:4:4 降到 4:2:0,SSIMULACRA2 均值從 87.8 掉到 82.7 —— 沒有一張倖免,47% 的圖掉了 5 分以上,最差一張掉了 17 分。把 JPEG 畫質調高也救不回來。

畫質數字不是百分比

JPEG 畫質 80 並不代表「原圖的 80%」。它只是一個索引,指向 1992 年制定的一張量化步階表,本身沒有任何物理意義。兩個都號稱畫質 80 的編碼器,在相同視覺畫質下檔案大小可以差到 40%。

攝影類內容的實用區間:

這個工具的做法哪裡不同

我們在動你的檔案之前,先從檔頭讀出色度取樣並原樣保留。你的圖是 4:4:4,輸出就還是 4:4:4。多數工具根本無法告訴你檔案原本用的是什麼;我們在你壓縮之前就為每張圖顯示出來。

我們也不拿你的畫質去換沒意義的東西。如果你的檔案已經壓縮過(例如先前用 q70 輸出),再用 q80 重新編碼只會讓檔案變大而不會更好看 —— 編碼器把位元花在描述上一次壓縮留下的痕跡。我們會辨識出這種情況,不作猜測,而是跑一趟無損處理:重寫熵編碼層,影像資料逐位元保持不變。在 baseline JPEG 上通常能省下約 4%。

一套真的有用的流程

一切都在你的瀏覽器裡執行。圖片永遠不會上傳。

開啟壓縮工具