Google 釋出新的對 JPEG 壓縮的演算法,比現有的壓縮在省下 35% 的容量,而且維持現有的清晰度。
註:缺點是壓縮需要的時間比較久 (我的測試最少要 3倍以上的時間)
Google 開源 Guetzli 對 JPEG 壓縮的演算法
Guetzli 有公開論文與原始碼 (Open Source),詳見:
- Guetzli 的論文:Guetzli: Perceptually Guided JPEG Encoder
- Guetzli Open Source GitHub:google/guetzli: Perceptual JPEG encoder
Guetzli 的安裝
於 Guetzli 的 GitHub 有 Release 編譯完成的版本,可見此處:Releases · google/guetzli
安裝直接下載 guetzli_linux_x86-64 即可,如下述步驟:
- wget https://github.com/google/guetzli/releases/download/v1.0/guetzlilinuxx86-64
- chmod +x ./guetzli_linux_x86-64
Guetzli 的圖片壓縮測試
Guetzli 於新聞雖然只有寫說是 JPEG,但是 GitHub 裡面的範例是 png,直接嘗試 pngcrush 與 guetzli 的壓縮比較
- wget https://github.com/google/guetzli/releases/download/v0/bees.png # 抓取線上提供的圖片
- $ time pngcrush -rem alla -brute -reduce bees.png pngcrush.png
- real 0m6.571s
- user 0m6.436s
- sys 0m0.108s
- $ time ./guetzli_linux_x86-64 bees.png guetzli.png
- real 0m18.613s
- user 0m18.180s
- sys 0m0.404s
- 壓縮完成的檔案大小比較,容量真的是省很多(省 4倍以上),圖片看不太出來差異
- 37910 guetzli.png
- 175256 pngcrush.png
對於 JPEG 的測試,目前有對一個目錄內的圖片做壓縮 (已經經過 jpegoptim 過得圖片),得到的結果如下:
- 多張圖片再次壓縮的效果
- jpegoptim 後,再讓 guetzli 壓縮,圖片並不一定會變小,不少圖片反而變大,但是整個目錄總容量是比較小的,不過省的幅度比預期少
- 壓縮速度比較
- jpegoptim 壓縮大約幾秒鐘
- guetzli 壓縮可能要多 n 倍的時間 (泡杯咖啡,吃完零食都還沒跑完,實際時間就沒量測)
- 實際差異可能要使用沒有壓縮過得原圖,讓 guetzli 壓縮後,再來比較看看可能會比較好 (此測試還沒做,要做大量的圖片比較能看出優缺點)