我想在内存中保留很多图像作为bitmapData。图像是单色的,所以我实际上不需要RGB或RGBA值。有没有办法将bitmapData的内部格式设置为单色或其他方式来显示除使用BitmapData之外的图像?
答案 0 :(得分:2)
不,BitmapData没有单色格式。
不,你不能在其他任何地方显示图像BitmapData(好的,着色器等等,但它真的不一样)。
但是,您可以使用ByteArray保存当前未使用的数据,以便以后使用某些BitmapData和setPixel
通过将单个通道值拆分为3个值来设置像素。
答案 1 :(得分: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];