一鍵解決Android項目圖片壓縮煩惱,為apk瘦身! [復制鏈接]

2019-4-23 08:46
一碼到底 閱讀:267 評論:0 贊:1
Tag:  
ImgCompressPlugin

一款Android端自動化圖片壓縮的gradle插件,一鍵掃描項目中的資源目錄并進行批量圖片壓縮,提供3種壓縮方式,支持有損及無損壓縮.同時會記錄已壓縮的文件,適合個人及團隊協同使用.

解決的場景
  • 需要對apk體積瘦身的應用

  • 解決逐個手動壓縮的繁雜過程,一鍵點擊即可解決

  • 項目中曾經不慎引入了沒壓縮過的圖片但沒發現.怎么破?ImgCompressPlugin幫你解決!

  • UI童鞋給予的設計圖大小感覺像壓縮過,但實際可能沒有,那我究竟是該手動壓縮一下還是偷偷懶直接放項目中呢?ImgCompressPlugin幫你解決!

  • 團隊版本迭代過程中,多人協同開發,如何避免重復壓縮導致的失真,怎么確定圖片已經被其他童鞋壓縮過呢?ImgCompressPlugin幫你解決!

如何使用

第一步:在Project的build.gradle文件中:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.kingkingdu.plugin:img-compressor:1.1.4'
    }
}
...
...
//圖片壓縮插件配置,后文有對配置信息介紹
apply plugin: 'img-compressor'
imgCompressOpt{
    way="pngquant"
    test = false
    whiteFiles=["text_pic1.png","test_pic2.jpg"]
    minSize=5
    tinyKeys=["your key"]
}

第二步:引入后點擊sync now,gradle配置完畢后會顯示下圖imgCompressTask,雙擊即可執行,等待壓縮結果即可

配置信息
  • way:設置壓縮的方式,支持3種常見的壓縮,"tinypng","pngquant","zopflip" 3選1,壓縮方式選擇及壓縮效果見下圖

  • test:設置測試模式是否開啟,false表示壓縮后圖片直接覆蓋原圖,true表示會把原圖及壓縮圖輸出到測試目錄(Project/ImageCompressTest)

  • whiteFiles:選填,白名單文件數組,不進行壓縮

  • minSize:單位為KB,設置原圖大于某個數值才觸發壓縮,0表示全部都壓縮

  • tinyKeys:選填,僅在way="tinypng"情況下才需要,tinyKeys申請教程入口

壓縮效果
原圖tinypngpngquantzopflip
壓縮類型有損有損無損
1.3M445KB542KB903KB



如何選擇合適的壓縮方式
  • 如果項目本身原先使用的壓縮方式與3種模式之一相同,則way選擇相同的方式.

  • 如果原先沒有固定的壓縮方式,那么推薦使用tiny或者pngquant,相對來說,tiny壓縮時間較長,需要去tinyKey官網申請key,教程入口,但效果最好.pngquant壓縮快速,效果也不錯

白名單的意義
  • 當進行圖片壓縮后發現有少量圖片失真,則可以加入白名單,避免被壓縮

測試模式
  • 適合場景:UI設計師可能需要協助對比壓縮后的圖片是否失真,但又沒項目的代碼權限,所以把壓縮后的圖片放置在一個目錄整體打包,發給設計師審閱,當然最便捷的方式是Android studio自帶的版本對比工具.

  • 當配置中test=true時,會把原圖及壓縮后的圖輸出到測試目錄(Project/ImageCompressTest),壓縮后的圖片命名為xxxx(test).png

  • 注意:當測試目錄中只存在原圖但不存在壓縮后的圖片時,表示圖片已充分壓縮,無需再壓縮

最佳實踐
  • 引入本插件,配置測試模式test=false,初次執行imgCompressTask后,查看log,會打印類似日志:

Task finish, compressed:3 files  skip:3 Files  before total size: 951.50KB after total size: 309.67KB save size: 641.83KB
通過日志可得知被壓縮圖片為3個,跳過圖片為3個,圖片壓縮前后的大小比較.圖片跳過的原因為圖片已充分壓縮,無需再壓縮

  • 執行task后會在project目錄下生成image-compressed-info.json文件,記錄了已壓縮的圖片信息

  • 通過Android studio自帶的版本控制對比壓縮前后圖片是否失真,將失真圖片(一般很少)加入白名單中,同時revert恢復原圖

  • 將image-compressed-info.json文件加入到版本控制,提交修改后的圖片及json文件

  • 在后續的版本開發中,團隊中的任何人在開發過程中加入任何圖片,或者等版本提測后,執行一次task即可壓縮新版本引入的圖片,舊版本的圖片保持不變,也不會出現團隊成員重復壓縮的情況

  • 建議團隊中一位童鞋專門處理圖片壓縮即可,無需所有人都懂得使用.也避免了json文件沖突問題.

問題解答

Q1:如果在后續版本迭代過程中,已壓縮的圖片替換成新的圖片,會不會忘記壓縮了?

答:不會.插件本身會通過MD5進行校驗,而不是圖片命名進行校驗,故新圖片也會執行壓縮的

Q2:支持的圖片格式有哪些?

答:支持png,jpg格式,webp暫時不支持

Q3:對于組件化項目存在多個module,是否會掃描所有的module?

答:會全部掃描,只要是application類型或者Android library類型都會被掃描到


我來說兩句
您需要登錄后才可以評論 登錄 | 立即注冊
facelist
所有評論(0)
領先的中文移動開發者社區
18620764416
7*24全天服務
意見反饋:[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粵ICP備15117877號 )

两码中特期期