國內(nèi)源搜不到相關(guān)答案楞件,特此分享一波盾饮。
場景 : 網(wǎng)絡(luò)請求圖片,拿到圖片轉(zhuǎn)換成Bitmap既绩,將圖片onDraw到View上概龄,線上反饋除了這個異常。特此記錄
問題分析:
android aapt針對色值數(shù)量小于256個的資源圖片饲握,在 aaptOptins cruncherEnabled為true時進(jìn)行了png壓縮操作私杜。將png圖片的32位全彩色模式圖片轉(zhuǎn)換成了8bit位索引模式
android較低版本系統(tǒng)在使用PreConfig=565模式下解析8bit索引模式圖片時能夠正常返回解析后的Bitmap蚕键,但Bitmap Config為空。導(dǎo)致后續(xù)的加載錯誤衰粹。
根據(jù)線上反饋的情況來看,都是 Android 7 以下的版本锣光。為什么Bitmap.getConfig()返回null?
如果這個值并未在 Java 層 Bitmap.Config 中公開铝耻,就返回 null誊爹,像索引顏色對應(yīng)的 kIndex8_Config 就會導(dǎo)致 getConfig() 會返回 null。
image.png
image.png
如上所示瓢捉,sConfigs獲取不到就返回null 频丘。
解決方案
bitmap.copy(bitmap.config, bitmap.isMutable) ----> bitmap.copy(Bitmap.Config.ARGB_8888, bitmap.isMutable)