2012-03-25 38 views
0

我想在內存中保存很多圖像作爲bitmapData。圖像是單色的,所以我實際上不需要RGB或RGBA值。有什麼辦法可以將bitmapData的內部格式設置爲單色或以其他方式顯示除使用BitmapData之外的圖像?AS3單色圖像

回答

2

不,沒有BitmapData的單色格式。不,你不能在其他任何東西上顯示圖像BitmapData(好吧,着色器等等,但它確實不一樣)。

但是,您可以使用ByteArray保存當前未使用的數據,以便稍後使用某些BitmapData和setPixel通過將單個通道值拆分爲3個值來設置像素。

1

如果您最多有4張圖像大小相同,您可以重複使用一個BitmapData對象將其全部存儲在不同的頻道中,並使用ColorMatrixFilter來顯示您想要的頻道。

這比wvxvw關於將數據存儲在ByteArray中並使用setPixel的建議速度更快(並且可能是較少的代碼)。

// store data in the red channel 
bitmap.bitmapData.copyChannel(im1.bitmapData, im1.bitmapData.rect, new Point(), BitmapDataChannel.RED, BitmapDataChannel.RED); 
// store data in the green channel 
bitmap.bitmapData.copyChannel(im2.bitmapData, im2.bitmapData.rect, new Point(), BitmapDataChannel.GREEN, BitmapDataChannel.GREEN); 

// e.g. filter the bitmap to just show the green channel 
// (1's in first col for red, 3rd col for blue, 4th for alpha 
var greenChannelFilter:ColorMatrixFilter = new ColorMatrixFilter( 
      [ 0,1,0,0,0, 
       0,1,0,0,0, 
       0,1,0,0,0, 
       0,0,0,0,255 ]); 
bitmap.filters = [greenChannelFilter];