Google Guetzli JPEG壓縮實測

Google Guetzli JPEG壓縮實測

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 試用心得及大量實拍!, 取用其中一個照片:
Google Guetzli JPEG壓縮實測

寫一個轉檔計時小程式, 看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 JPEG壓縮實測

Google Guetzli 效果顯著但效能待改善


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

轉檔時間太久了,實用性不高

如果時間可以壓到30秒以內應該會更好
非常棒的一個測試,
簡單清楚明瞭 ~

不給個 +5 分過不去 ~

這技術剛出來沒多久,可能還有許多效能上可以改善的地方,
相信慢慢的會有所改善吧 ~

不過現今網路速度,不論是實體網路(ADSL、VDSL、FTTH),
或者行動網路 (3G、4G、甚至未來的 5G) 都越來越快的狀況下,
花好幾倍的壓縮時間去省 10~20% 不等的大小,
可能不符合時間成本利益吧 ?
對於linux操作陌生,只會用windows下指令給ffmpeg編碼影音檔案

拜請大大編譯x86/x64版本的程式,十分感激

對網站營運商來說, 大量圖片若能節省30%儲存空間, 還能少CDN輸出費用的話, 省下的錢也是很可觀的

那對我們消費者來說, 圖片載入更快(檔案相對小了)也是好事
KevinYu0504 wrote:
花好幾倍的壓縮時間去省 10~20% 不等的大小

Ryan Lai wrote:
對網站營運商來說,...(恕刪)


這倒也是....

期望效能問題能盡速解決囉
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?