Masking for BitmapData Methods
Masking for BitmapData Methods
Two methods of the BitmapData object accept bit masks as parameters: Threshold
and getColorBoundsRect
. In both cases, the mask specifies which bits in the color value the method should use in its comparisons. For example, if you wanted to use getColorBoundsRect
to find the area containing all pixels which had a specific value for only the green channel, you could do the following:
var greenValueToMatch:Number = 0x80;
// set up a mask with only the green channel bits turned on:
var colorMask:Number = 0x0000FF00;
// call the method, and don't forget to shift the green bits
// into the correct position:
rect = myBitmapData.getColorBoundsRect(colorMask,greenValueToMatch<<8);
The getColorBoundsRect
method uses the AND operator internally to apply the mask. It essentially checks each pixel in the bitmap to see whether it matches using a formula similar to the following:
(bitMask & colorValueToMatch) == (bitMask & sourcePixelColorValue)
Threshold uses bit masks in a nearly identical way. The following code makes all pixels with a red channel value greater than 0x99 turn white (0xFFFFFFFF):
// set up a mask with only the red channel bits turned on:
var colorMask:Number = 0x00FF0000;
// call the method
myBmp.threshold(myBmp,rect,pnt,">",0x99<<16,0xFFFFFFFF,colorMask,true);
For more specific information on these methods, check out the following pages in the Flash 8 LiveDocs:
- getColorBoundsRect (BitmapData.getColorBoundsRect method)
- threshold (BitmapData.threshold method)
Comments