AS3的位圖類BitmapData,在內存中以32位存儲。
圖片的表現形式一般爲四個通道的混合,即BGRA。每個顏色通道(R、G、B)存儲單獨的顏色值,Alpha通道負責存儲透明度信息。
每個通道的信息以二進制存儲,一個位數(bit)的二進制可以表現兩種狀態,即0、1(二值圖像)。那麼8個位數可以表現2^8 = 256種狀態,即256個色階。四個通道是4×8 = 32(bit)。
內存中一個字節(Byte)佔用8位二進制,那麼一個像素佔用32/8 = 4(Byte)。
那麼AS3的BitmapData在內存中佔用的空間是:像素數×4。
比如,一張1024×1024的圖片佔用的空間爲:1024×1024×4 = 1048576(Byte)= 4M。
目前爲止(2012/7/6),AS3的機制只支持32位的圖像,也就是說所有編碼格式的圖像經過AS3的解碼以後全部是32位,Adobe未提供其他位數的API。
比較以下佔用大小:
1.bitmapData
_maskBitMapData = new BitmapData(1920,1024,true,0x66666666);
_mask = new Bitmap(_maskBitMapData);
2.shape
_mask = new Shape();
_mask.graphics.beginFill(0x666666, 0.6);
_mask.graphics.drawRect(0, 0, 1920, 1024);
_mask.graphics.endFill();