Gradle入門到實戰(二) — ImageOptimization安卓圖片轉換壓縮插件
上一篇我們了解了Gradle的各個方面,本篇介紹一款安卓圖片優化轉換插件,目前已在項目中使用,可一鍵批量轉換壓縮圖片,webp轉換與png/jpg壓縮就是那麽簡單
GitHub項目地址:ImageOptimization
ImageOptimization
安卓圖片優化插件:能有效減少apk安裝包大小,支持png/jpg轉為webp,支持png圖片有損無損壓縮,支持jpg有損壓縮
支持的os
macOS
、windows10
上已經測試通過,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 | 無損轉為webp | lossy有損壓縮 | lossless無損壓縮 |
---|---|---|---|---|
50.05k | 15.28k | 30.30k | 13.64k | 42.21k |
jpg圖片
原圖 | 有損轉為webp | lossy有損壓縮 |
---|---|---|
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安卓圖片轉換壓縮插件