
Google Guetzli是為了相容於現存JPEG的解碼, 並且大幅減少檔案大小又維持品質的新壓縮法, 30%以上的空間節省, 還能讓肉眼難以查覺JPEG圖檔壓縮劣化, 其壓縮程式已可在GitHub上取得: https://github.com/google/guetzli, 這裡我們來實際安裝與壓縮圖片看看能達到什麼效果。
Google Guetzli 安裝
本例中我使用VMWare建立Debian Linux 8.7虛擬機器, 1 CPU, 由於需要滿多的記憶體, 我設定8GB RAM, 照著Google Guetzli安裝方法編譯。
由於要編譯程式, 需要安裝Compiler(GCC):
apt-get install gcc make
其他一同需要的套件會跟著安裝
另外測試中發現缺少pkg-config, 所以也需要安裝:
apt-get install pkg-config
安裝Google Guetzli需要的套件:
apt-get install libpng-dev libgflags-dev
下載最新的Google Guetzli:
wget https://github.com/google/guetzli/archive/master.zip
解壓縮:
unzip master.zip
進入Google Guetzli目錄與編譯:
cd guetzli-master
make
應用程式將會放在目前目錄的bin/Release下, 執行檔名就是guetzli, 我把它複製到系統應用程式目錄:
cp guetzli /usr/local/sbin/
接著我找了一個站上的文章照片當範本: 【動手玩】Sony FE 100mm F2.8 STF GM OSS 試用心得及大量實拍!, 取用其中一個照片:

寫一個轉檔計時小程式, 看guetzli需要多少時間:
test.sh
#!/bin/bash
STARTTIME=$(date +%s)
# for guetzli
guetzli mobile01.jpg guetzli.jpg
# for imagemagick
#convert -quality 95 mobile01.jpg imagemagick.jpg
ENDTIME=$(date +%s)
echo "$(($ENDTIME - $STARTTIME))"
這樣會顯示使用的時間秒數。
Google Guetzli 轉檔測試
與其對照的是使用libjpeg的ImageMagick轉檔程式, 首次測試Guetzli就遇到問題, 含有EXIF的照片無法轉換, 檔案太大也會記憶體不足...於是先將照片用PhotoShop轉為PNG圖檔, 裁切到1920x1200(剛好是我的螢幕原生解析度, 用看圖程式比較不用切換zoom), guetzli預設JPEG品質為95%, 所以ImageMagick我也設定95%。
1920x1200 PNG 原圖 2,407KBytes
以ImageMagick轉JPEG圖片 616KBytes, 時間不到1秒
以Google Guetzli轉JPEG圖片 469Bytes, 耗時166秒
相較於ImageMagick, Google Guetzli節省24%儲存空間
再來我將來源圖片轉為JPEG, 使用ImageMagick並設定100%品質:
convert -quality 100 mobile01.png mobile01.jpg
繼續JPEG的壓縮測試
1920x1200 JPG原圖 1,708KBytes
ImageMagick壓縮後 623KBytes, 時間不到1秒
Google Guetzli壓縮後 411KBytes, 耗時138秒
相較於ImageMagick, Google Guetzli節省34%儲存空間
對原本720x480小圖片的壓縮:
720x480 JPG原圖: 241KBytes
ImageMagick壓縮後 94.3KBytes
Google Guetzli壓縮後 88.5KBytes, 耗時37秒
相較於ImageMagick, Google Guetzli節省6%儲存空間, 小圖的差異就不太大, 不過上面的大圖差異就很顯著!
1920x1200圖片取相同部位比較, 劣化情況看不太出來

Google Guetzli 效果顯著但效能待改善
Google Guetzli明顯的節省儲存空間, 但是轉換需要的運算時間很長, 我們用戶端如果有更強的機器(CPU, RAM, Disk I/O各方面)情況應該可以改善, 但根本的解決之道是Google Guetzli本身對Multi-Thread支援改寫, RAM的使用量也要減少, Out of Memory, 程序被Killed的訊息在枯等轉檔中出現後很令人想哭啊, Guetzli廣泛實用化才有可能!