谷歌開源圖片壓縮算法Guetzli實測體驗報告

谷歌大神又出開源新技術啦,此次是對JPEG格式的圖片採用全新算法從新編碼,輸出的圖片仍是JPEG可是圖片大小明顯縮小,而質量不但沒有損失,甚至還更加優化,速速來體驗一把。git

1、環境安裝

下載谷歌開源軟件,編譯安裝之後其實是一個bin工具。輸入圖片,輸出jpeg格式圖片。github

項目地址:https://github.com/google/guetzliweb

文檔下面有寫Ubuntu、Arch Linux、windows、macOS的安裝方式。咱們以 Ubuntu 系統爲例,介紹如何安裝 guetzli。算法

首先,克隆谷歌的項目文件:windows

git clone https://github.com/google/guetzli.git

而後,安裝 libpng 軟件包:工具

sudo apt-get install libpng-dev
cd guetzli

而後直接 make ,生成bin文件,強大的開源工具 ./bin/Release/guetzli 因而就生成了。測試

2、實戰測試

guetzli的使用比較簡單,參數不多。默認採用95的質量,也能夠經過 -quality 來指定大於等於84的質量,若是要小於84,須要修改源碼。輸入必須是符合轉換要求的圖片,輸出則是jpeg格式圖片。優化

什麼是符合要求的圖片?

官方說明:google

Only YUV color space input jpeg is supported編碼

實測發現,使用透明通道的png圖、非YUV的jpeg好比黑白圖、gif圖都是不能轉換的

guetzli效果如何?

批量實測1292張圖片。使用默認參數,也就是原圖的95%質量。

1185張轉換成功,佔比91.7%,其中3張png轉換jpeg之後圖片比原圖更大,佔比0.2%。107張沒法轉換,佔比8.3%。

原圖平均大小33KB,guetzli壓縮後23.4KB,平均壓縮率29%,平均每張耗時7956毫秒。

單張最大的圖片3.76MB,guetzli壓縮後2.55MB,壓縮率31.5%,耗時976949毫秒(16分鐘)。

單張最小的圖片757B,guetzli壓縮後603B,壓縮率20%,耗時65毫秒。

另外借用國外媒體報道中使用的對比圖片,直觀地感覺下壓縮後的效果:

左邊是原圖,中間是 libjpeg 壓縮後,右邊是使用 guetzli 壓縮後。

guetzli的資源消耗如何?

官方文檔說,1MPIX的圖片處理須要消耗300M內存。

實測一個1MB大小1920x2560的圖片,有4.9MPIX。理論消耗內存1474MB,實際消耗1009MB內存,實際與理論基本相符。由此看出這個工具是個內存消耗大戶,60G內存只夠處理200MPIX,也就是同時處理40張左右的1920x2560圖片。

CPU消耗則一直是100%單核佔用。固然實際使用多核機器能夠同時跑多個進程。有多少核就能跑多少個guetzli任務。

壓縮圖片耗時跟圖片大小程離散相關,圖片越大,耗時越久:

測試環境使用的是8核16G內存的機器。單核平均處理23KB的圖片須要約8秒鐘,這個耗時比較長,註定沒法進行在線實時壓縮。

3、優劣對比

guetzli的優點在哪?

實測對質量在90或如下的jpg圖片,guetzli輸出的新圖質量不會下降。而實際壓縮率可以達到平均壓縮率29%。

兼容性比較好,輸出的jpeg格式圖片通用性很是高。沒有webp、sharpp那種協議不兼容的困擾。

在客戶端jpeg格式的圖片編解碼速度比其餘私有協議快不少。

guetzli有哪些劣勢?

guetzli處理類型侷限性,並不能應對所有類型的圖片。只能處理YUV顏色編碼的圖片

時效性較差,圖片越大處理越慢。1MB的圖片處理須要291秒,本次測試平均23KB的圖片須要8秒。

本文轉載自騰雲閣,已得到做者受權。

相關文章
相關標籤/搜索