1. 程式人生 > >Android中Bitmap大小計算

Android中Bitmap大小計算

Bitmap.Config是Bitmap中的一個內部類,在Bitmap類裡createBitmap(intwidth, 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  

ARGB_8888、ARGB_4444、RGB_565、ALPHA_8
四種類型為bitmap在記憶體中存在的四種色彩的儲存模式,他們本質區別體現在每種模式下的bitmap內部的每個畫素點,在記憶體中的大小和組成成分的區別。
A->alpha(透明度),R->red(紅色),G->green(綠色),B->blue(藍色)
每種模式下的一個畫素的具體儲存大小: 
ARGB_8888:A->8bit->一個位元組,R->8bit->一個位元組,G->8bit->一個位元組,B->8bit->一個位元組,即8888,一個畫素總共佔四個位元組,8+8+8+8=32bit=4byte
ARGB_4444:A->4bit->半個位元組,R->4bit->半個位元組,G->4bit->半個位元組,B->4bit->半個位元組,即4444,一個畫素總共佔兩個位元組,4+4+4+4=16bit=2byte
RGB_565:R->5bit->半個位元組,G->6bit->半個位元組,B->5bit->半個位元組,即565,一個畫素總共佔兩個位元組,5+6+5=16bit=2byte
ALPHA_8:A->8bit->一個位元組,即8,一個畫素總共佔一個位元組,8=8bit=1byte
計算大小方式: 
一張bitmap的大小 = 有多少個畫素點 * 每個畫素點記憶體中佔用的大小 = 長 * 寬 * 3中講的各種模式下對應的畫素點佔用的位元位
例子:計算一張長寬為1000/1000,ARGB_8888格式的一張bitmap的大小: 
1000 * 1000 * 4byte = 4000kb = 4M