1. 程式人生 > >Gradle入門到實戰(二) — ImageOptimization安卓圖片轉換壓縮插件

Gradle入門到實戰(二) — ImageOptimization安卓圖片轉換壓縮插件

建議 pre .com less 無損壓縮 ble 多個 con 圖片優化

上一篇我們了解了Gradle的各個方面,本篇介紹一款安卓圖片優化轉換插件,目前已在項目中使用,可一鍵批量轉換壓縮圖片,webp轉換與png/jpg壓縮就是那麽簡單

GitHub項目地址:ImageOptimization

ImageOptimization

安卓圖片優化插件:能有效減少apk安裝包大小,支持png/jpg轉為webp,支持png圖片有損無損壓縮,支持jpg有損壓縮

支持的os

macOSwindows10上已經測試通過,linux上暫時沒測試。

引入ImageOptimization

在Project的build.gradle文件中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 
‘com.wanglei.image-optimization:optimization:1.0‘ } }

在你想要優化的module的build.gradle文件中引入插件: 如在多個module使用則每個module都要引入插件

apply plugin:‘com.wanglei.image-optimization‘

同步之後會生成如下任務:雙擊執行任務即可

技術分享圖片

任務生成規則

imageOptimization_module名字_variant名字

配置項

在module的build.gradle文件中添加配置選項,配置插件優化的策略以及參數:

ImageOptimization{
    pluginStrategy 
= "compress" convertWebpQuality = 80 jpegCompressQuality = 90 appIconName = "ic_launcher" appIconRoundName = "ic_launcher_round" convertWebpType = "lossy" compressPngType = "lossless" pngCompressQuality = 79 }

ImageOptimization支持多項參數配置,靈活度高,可根據項目需要自己配置參數,可配置優先轉為webp不能轉換的在進行圖片的壓縮,同樣你也可以配置只進行圖片的壓縮而不轉為webp

配置項參數說明

參數是否必須參數配置參數說明
pluginStrategy 可配置"webp"或者"compress" 插件運行策略參數:如配置為"webp"則會將圖片優先轉為webp格式,如果不能轉換或者轉換失敗或轉換為圖片更大則進行圖片的壓縮,如配置為"compress"則只進行圖片的壓縮不會轉為webp,此參數如不配置默認為"compress"
convertWebpType 可配置"lossy"或者"lossless" webp轉換類型參數:"lossy"轉為webp采用有損轉換模式,"lossless"轉為webp采用無損模式,此參數默認為"lossy"
compressPngType 可配置"lossy"或者"lossless" png圖片壓縮類型參數:"lossy"為壓縮png采用有損壓縮模式,"lossless"為壓縮png采用無損壓縮模式,此參數默認為"lossy"
pngCompressQuality 可配置範圍為[0,100] png圖片壓縮質量參數:默認為80,建議使用默認即可,此參數為compressPngType為"lossy"時起作用,也就是有損壓縮才起作用
convertWebpQuality 可配置範圍為[0,100] 圖片轉為webp的質量參數:默認為75,此參數為谷歌建議的參數,建議不要更改,轉換webp有損模式下此參數才起作用
jpegCompressQuality 可配置範圍為[84,100] jpg圖片壓縮質量參數:默認為84
appIconRoundName 項目app圓形啟動圖標的名字,不包括圖片擴展名 如圓形啟動圖標為:icon_round.png,這裏配置為icon_round
appIconName 項目app啟動圖標的名字,不包括圖片擴展名 如啟動圖標為:icon.png,這裏配置為icon

圖片壓縮效果對比

PNG圖片

原圖有損轉為webp無損轉為webplossy有損壓縮lossless無損壓縮
技術分享圖片 技術分享圖片 技術分享圖片
50.05k 15.28k 30.30k 13.64k 42.21k

jpg圖片

原圖有損轉為webplossy有損壓縮
技術分享圖片 技術分享圖片 技術分享圖片
7.91k 2.82k 5.17k

由於博客園不能上傳webp圖片,上圖webp圖片無法正常顯示,可到GitHub中查看具體對比

額外說明

插件運行的時候會有相應信息打印出:

技術分享圖片

安卓對webp圖片的支持


安卓不同sdk版本對webp的支持有所不同,具體如下:

sdk<14:不支持webp格式圖片
14<= sdk <18:支持webp格式圖片,但是不支持有透明通道的 webp格式圖片
sdk >=18:有透明通過的webp圖片也支持

此外如果想以無損方式將png/jpg圖片轉為webp,需要的sdk版本最小為18。

ImageOptimization對以上情況都做了適配,你只需放心使用即可

.9.png圖片的處理

ImageOptimization插件對.9.png圖片不做任何處理,既不轉換也不壓縮保持原樣。

更多細節可到github查看:https://github.com/MISAYAWANGLEI/ImageOptimization

Gradle入門到實戰(二) — ImageOptimization安卓圖片轉換壓縮插件