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


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

一、環境安裝

下載谷歌開源軟件,編譯安裝以后實際上是一個bin工具。輸入圖片,輸出jpeg格式圖片。

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

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

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

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

然后,安裝 libpng 軟件包:

sudo apt-get install libpng-dev
cd guetzli 

然后直接 make ,生成bin文件,強大的開源工具 ./bin/Release/guetzli 於是就生成了。

二、實戰測試

guetzli的使用比較簡單,參數很少。默認采用95的質量,也可以通過 -quality 來指定大於等於84的質量,如果要小於84,需要修改源碼。輸入必須是符合轉換要求的圖片,輸出則是jpeg格式圖片。

什么是符合要求的圖片?

官方說明:

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秒鍾,這個耗時比較長,注定無法進行在線實時壓縮。

三、優劣對比

guetzli的優勢在哪?

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

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

在客戶端jpeg格式的圖片編解碼速度比其他私有協議快很多。

guetzli有哪些劣勢?

guetzli處理類型局限性,並不能應對全部類型的圖片。只能處理YUV顏色編碼的圖片。

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

 

相關推薦

1.圖片流量節省大殺器:基於CDN的sharpP自適應圖片技術實踐

2.關於Android圖片資源瘦身的奇思妙想

3.Laravel 整合萬向優圖圖片管理能力,打造高效圖片處理服務

 


 

此文已由作者授權騰訊雲技術社區發布,轉載請注明文章出處,獲取更多雲計算技術干貨,可請前往騰訊雲技術社區

歡迎大家關注騰訊雲技術社區-博客園官方主頁,我們將持續在博客園為大家推薦技術精品文章哦~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM