最近開發的android 應用上架小米的時候總是報out of memory 錯誤, 仔細review了N多遍代碼,并沒有發現那里不妥的地方, 而且自己使用過程中也沒有崩潰過. 于是使用moniter 監測了一下內存, 發現圖片占用了很大內存空間.
之前寫代碼都是設計直接給圖,然后將圖放到對應目錄下, 沒怎么研究過圖片尺寸的問題, 這次沒有專業設計師協助, 都是統一搞一張大圖放到mipmap中.
經過這次的問題, 詳細學習了android中尺寸相關內容, 內容如下兩篇參考文獻:
Android-分辨率以及dip(dp)、dpi、ppi、px、sp、pt說明
Android開發中dip,dpi,density,px等詳解
在以上學習基礎上, 使用python 的pillow庫寫了一個切圖的工具, 有兩個功能:
- icon切割, 切割正方形圖片,根據Android設計規范將圖標切割
iconDirs = ["mipmap-ldpi","mipmap-mdpi","mipmap-hdpi","mipmap-xhdpi","mipmap-xxhdpi","mipmap-xxxhdpi"]
iconSizes = [36, 48, 72, 96, 144, 192]
1.1 ios 圖標切割, 根據ios設計規范切割圖片
- 根據dip 修改圖片大小
實現原理根據不同dpi對應的數值,使用公式px = dip * dpi / 160
;
imgDirs = ["mipmap-ldpi", "mipmap-mdpi", "mipmap-hdpi", "mipmap-xhdpi", "mipmap-xxhdpi", "mipmap-xxxhdpi"]
imgDpis = [120, 160, 240, 320, 480, 640]
附件: 詳細代碼