android bitmap(一) ARGB_8888/RGB_565
參考
- android bitmap(一) ARGB_8888/RGB_565/ALPHA_8/ARGB_4444 【轉載】
- (Bitmap)ARGB_8888/RGB_565/ALPHA_8/ARGB_4444詳解
- ALPHA_8、ARGB_4444、ARGB_8888、RGB_565等圖片格式的使用說明
總結
ARGB_8888佔記憶體、清晰度高、支援透明效果
RGB_565節省記憶體、清晰度適中、不支援透明效果
分析
開啟Android.graphics.Bitmap類裡有一個內部類Bitmap.Config類,在Bitmap類裡createBitmap(int width, int height, Bitmap.Config config)方法裡會用到,開啟個這個類一看
列舉變數
public static final Bitmap.Config ALPHA_8
public static final Bitmap.Config ARGB_4444
public static final Bitmap.Config ARGB_8888
public static final Bitmap.Config RGB_565
Bitmap.Config ARGB_4444:每個畫素佔四位,即A=4,R=4,G=4,B=4,那麼一個畫素點佔4+4+4+4=16位
Bitmap.Config ARGB_8888:每個畫素佔四位,即A=8,R=8,G=8,B=8,那麼一個畫素點佔8+8+8+8=32位
Bitmap.Config RGB_565:每個畫素佔四位,即R=5,G=6,B=5,沒有透明度,那麼一個畫素點佔5+6+5=16位
Bitmap.Config ALPHA_8:每個畫素佔四位,只儲存透明度,不儲存顏色。
一般情況下我們都是使用的ARGB_8888,由此可知它是最佔記憶體的,因為一個畫素佔32位,8位=1位元組,所以一個畫素佔4位元組的記憶體。假設有一張480x800的圖片,如果格式為ARGB_8888,那麼將會佔用1500KB的記憶體。
那麼對bitmap有何影響?
這裡都以ARGB_8888為基準來進行對比。
ARGB_4444:記憶體佔用減少一半,但是每個值圖片失真度很嚴重,這個引數本身已經不推薦使用了。
RGB_565:記憶體佔用減少一半,捨棄了透明度,同時三色值也有部分損失,但是圖片失真度很小。
ALPHA_8:記憶體佔用沒有減少!按註釋的解釋個人理解應該是減少3/4的記憶體佔用,而且圖片與ARGB_8888下的沒有區別。
(ALPHA_8查到的資料不多,希望有高手可以幫我解惑)
總結:
由於ARGB_4444不推薦使用和ALPHA_8效果不明。我們大多數是用的還是ARGB_8888和RGB_565。
RGB_565能夠在保證圖片質量的情況下大大減少記憶體的開銷,是解決oom的一種方法。但是一定要注意RGB_565是沒有透明度的,如果圖片本身需要保留透明度,那麼就不能使用RGB_565。
在遊戲應用中,要根據具體的使用要求來進行使用。例如一張地圖,肯定不會出現空白透明的地方,所以可以選用不帶alpha通道的格式。把地圖,改成RGB_565這一類,沒有透明度的圖片,縮小了很多。而人物,肯定會有透明的地方。然後我們還有把一些後期功能,不重要的功能,例如一些小怪,壓縮,從畫素上壓縮。還有圖片重用,在這個副本是大boss,下一個副本是小怪。把60級以後的圖片刪除掉,玩家玩到某個節點的時候,就提示要求玩家點選下載新的包。或者在遊戲過程中,也偷偷下載新的圖片。
相關文章
- Android圖片壓縮質量引數Bitmap.Config RGB_565、 ARGB_8888的含義及用法Android
- 理解Android BitmapAndroid
- Android Bitmap 使用Android
- Android Bitmap 初探Android
- Android中的BitmapAndroid
- Android Bitmap優化Android優化
- Android: Bitmap/Canvas/DrawableAndroidCanvas
- Android Bitmap面面觀Android
- Bitmap回收—Canvas: trying to use a recycled bitmap android.graphicsCanvasAndroid
- android bitmap壓縮方案Android
- Android-認識BitmapAndroid
- Android JNI 之 Bitmap 操作Android
- Android Bitmap 大小計算Android
- Android Bitmap實戰技巧Android
- Android Bitmap(點陣圖)詳解Android
- Android Bitmap的常用壓縮方式Android
- android中Bitmap的剪下與拉伸Android
- Android Bitmap快取池使用詳解Android快取
- Android-採用Matrix對Bitmap加工Android
- android canvas 編輯bitmap畫虛線AndroidCanvas
- Android圖片快取之Bitmap詳解Android快取
- 使用高德地圖時出現 trying to use a recycled bitmap android.graphics.Bitmap地圖Android
- Android O 8.0 以上 bitmap記憶體分配Android記憶體
- Android粒子篇之Bitmap畫素級操作Android
- Arcgis For Android 中MapView 截圖獲取BitmapAndroidView
- Android 效能優化(五)之細說 BitmapAndroid優化
- android 關於Bitmap壓縮處理解析Android
- 非常全面的 Android Bitmap 知識點梳理Android
- 阿里Android開發規範:Bitmap、Drawable 與動畫阿里Android動畫
- Android 設定圖片 Bitmap任意透明度Android
- Android: Unknown “Bitmap” cause by 'mGlow' causing memory leakAndroid
- bitmap
- BITMAP索引的INLIST ITERATOR與BITMAP OR索引
- bitmap index點陣圖索引系列(一)Index索引
- Android圖片編碼機制(Bitmap,Skia,libJpeg)Android
- 2018.2.28、android-Bitmap學習筆記Android筆記
- 關於android 使用bitmap的OOM心得和解決方案AndroidOOM
- c# svg轉Bitmap Bitmap轉ImageSourceC#SVG