| Package | flash.display |
| Class | public class BitmapData |
| Inheritance | BitmapData Object |
| Implements | IBitmapDrawable |
flash.display.Loader class.
This class lets you separate bitmap rendering operations from the Flash Player internal display updating routines. By manipulating a BitmapData object directly, you can create complex images without incurring the per-frame overhead of constantly redrawing the content from vector data.
The methods of the BitmapData class support effects that are not available through the filters available to non-bitmap display objects.
A BitmapData object contains an array of pixel data. This data can represent either a fully opaque bitmap or a transparent bitmap that contains alpha channel data. Either type of BitmapData object is stored as a buffer of 32-bit integers. Each 32-bit integer determines the properties of a single pixel in the bitmap.
Each 32-bit integer is a combination of four 8-bit channel values (from 0 to 255) that describe the alpha transparency and the red, green, and blue (ARGB) values of the pixel. (For ARGB values, the most significant byte represents the alpha channel value, followed by red, green, and blue.)
The four channels (alpha, red, green, and blue) are represented as numbers
when you use them with the BitmapData.copyChannel() method or the
DisplacementMapFilter.componentX
and DisplacementMapFilter.componentY properties, as follows:
BitmapDataChannel.ALPHABitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEYou can attach BitmapData objects to a Bitmap object by using the
bitmapData property of the Bitmap object.
You can use a BitmapData object to fill a Graphics object by using the
Graphics.beginBitmapFill() method.
You can use the new BitmapData() constructor function to create a new
BitmapData instance.
The maximum width and maximum height of a BitmapData object is 2880 pixels.
Calls to any method or property of a BitmapData object throw an ArgumentError if
the BitmapData object is invalid (for example, if it has height == 0 and
width == 0).
| flash.display.Bitmap.bitmapData, flash.display.Graphics.beginBitmapFill(), flash.display.Loader |
| Property | Defined by | ||
|---|---|---|---|
![]() | constructor : Object
A reference to the class object or constructor function for a given object instance.
| Object | |
| height : int
[read-only]
The height of the bitmap image in pixels.
| BitmapData | ||
![]() | prototype : Object
[static]
A reference to the prototype object of a class or function object.
| Object | |
| rect : Rectangle
[read-only]
The rectangle that defines the size and location of the bitmap image.
| BitmapData | ||
| transparent : Boolean
[read-only]
Defines whether the bitmap image supports per-pixel transparency.
| BitmapData | ||
| width : int
[read-only]
The width of the bitmap image in pixels.
| BitmapData | ||
| Function | Defined by | ||
|---|---|---|---|
|
Creates a BitmapData object with a specified width and height.
| BitmapData | ||
|
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Takes a source image and a filter object and generates the
filtered image.
| BitmapData | ||
|
Returns a new BitmapData object that is a clone of the original instance
with an exact copy of the contained bitmap.
| BitmapData | ||
|
Adjusts the color values in a specified area of a bitmap image by using a
ColorTransform object. | BitmapData | ||
|
Compares two BitmapData objects.
| BitmapData | ||
|
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Transfers data from one channel of another BitmapData object or the current
BitmapData object into a channel of the current BitmapData object.
| BitmapData | ||
|
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Provides a fast routine to perform pixel manipulation
between images with no stretching, rotation, or color effects.
| BitmapData | ||
|
Frees memory that is used to store the BitmapData object.
| BitmapData | ||
|
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Draws the
source display object onto the bitmap image, using the
Flash Player vector renderer. | BitmapData | ||
|
Fills a rectangular area of pixels with a specified ARGB color.
| BitmapData | ||
|
Performs a flood fill operation on an image starting
at an (x, y) coordinate and filling with a certain color.
| BitmapData | ||
|
Determines the destination rectangle that the
applyFilter() method call affects, given a
BitmapData object, a source rectangle, and a filter object. | BitmapData | ||
|
Determines a rectangular region that either fully encloses all pixels of a specified color within the
bitmap image (if the
findColor parameter is set to true) or fully encloses
all pixels that do not include the specified color (if the findColor parameter is set
to false). | BitmapData | ||
|
Returns an integer that represents an RGB pixel value from a BitmapData object at
a specific point (x, y).
| BitmapData | ||
|
Returns an ARGB color value that contains alpha channel data and RGB
data.
| BitmapData | ||
|
Generates a byte array from a rectangular region of pixel data.
| BitmapData | ||
![]() |
Indicates whether an object has a specified property defined.
| Object | |
|
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Performs pixel-level hit detection between one bitmap image
and a point, rectangle or other bitmap image.
| BitmapData | ||
![]() |
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter.
| Object | |
|
Locks an image so that any objects that reference the BitmapData, such as Bitmap objects,
are not updated when this BitmapData changes.
| BitmapData | ||
|
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Performs per-channel blending from a source image to a
destination image.
| BitmapData | ||
|
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Fills an image with pixels representing random noise.
| BitmapData | ||
|
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Remaps the color channel values in an image that has up to four arrays of color palette data, one
for each channel.
| BitmapData | ||
|
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Generates a Perlin noise image.
| BitmapData | ||
|
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Performs a pixel dissolve either from a source image to a
destination image or by using the same image.
| BitmapData | ||
![]() |
Indicates whether the specified property exists and is enumerable.
| Object | |
|
Scrolls an image by a certain (x, y) pixel amount.
| BitmapData | ||
|
Sets a single pixel of a BitmapData object.
| BitmapData | ||
|
Sets the color and alpha transparency values of a single pixel of a BitmapData
object.
| BitmapData | ||
|
Converts a ByteArray into a rectangular region of pixel data.
| BitmapData | ||
![]() |
Sets the availability of a dynamic property for loop operations.
| Object | |
|
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Tests pixel values in an image against a specified threshold and sets pixels that pass the test to new color values.
| BitmapData | ||
![]() |
Returns the string representation of the specified object.
| Object | |
|
Unlocks an image so that any objects that reference the BitmapData, such as Bitmap objects,
are updated when this BitmapData changes.
| BitmapData | ||
![]() |
Returns the primitive value of the specified object.
| Object | |
height:int [read-only] public function get height():int
rect:Rectangle [read-only] public function get rect():Rectangle
transparent:Boolean [read-only]true for the transparent parameter of the constructor. Then, after you create
a BitmapData object, you can check whether it supports per-pixel transparency by seeing if the value of the
transparent property is true.
public function get transparent():Boolean
width:int [read-only] public function get width():int
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
fillColor parameter, every pixel in the bitmap is set
to that color.
By default, the bitmap is created as transparent, unless you pass the value false
for the transparent parameter. Once you create an opaque bitmap, you cannot change it to
a transparent bitmap. Every pixel in an opaque bitmap uses only 24 bits of color channel information.
If you define the bitmap as transparent, every pixel uses 32 bits of color channel information,
including an alpha transparency channel.
The maximum width and maximum height of a BitmapData object is 2880 pixels. If you specify a width or height value that is greater than 2880, a new instance is not created.
Parameterswidth:int — The width of the bitmap image in pixels.
|
|
height:int — The height of the bitmap image in pixels.
|
|
transparent:Boolean (default = true) — Specifies whether the bitmap image supports per-pixel transparency.
The default value is true (transparent). To create a fully transparent bitmap set the value
of the transparent parameter to true and the value of the fillColor
parameter to 0x00000000 (or to 0).
|
|
fillColor:uint (default = 0xFFFFFFFF) — A 32-bit ARGB color value that you use to fill the bitmap image area.
The default value is 0xFFFFFFFF (solid white).
|
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
This method relies on the behavior of built-in filter objects, which determine the destination rectangle that is affected by an input source rectangle.
After a filter is applied, the resulting image can be larger than the input image.
For example, if you use a BlurFilter class
to blur a source rectangle of (50,50,100,100) and a
destination point of (10,10), the area that changes in the
destination image is larger than (10,10,60,60) because of
the blurring. This happens internally during the applyFilter()
call.
If the sourceRect parameter of the sourceBitmapData parameter is
an interior region, such as (50,50,100,100) in a 200 x 200 image, the filter uses the source
pixels outside the sourceRect parameter to generate
the destination rectangle.
If the BitmapData object and the object specified as the sourceBitmapData
parameter are the same object, Flash Player will use a temporary copy of the object to
perform the filter. For best performance, avoid this situation.
sourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different
BitmapData object or it can refer to the current BitmapData instance.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The point within the destination image (the current BitmapData
instance) that corresponds to the upper-left corner of the source rectangle.
|
|
filter:BitmapFilter — The filter object that you use to perform the filtering operation. Each type
of filter has certain requirements, as follows:
|
import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); bmd.applyFilter(bmd, rect, pt, filter);
public function clone():BitmapData
BitmapData —
A new BitmapData object that is identical to the original.
|
import flash.display.*; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(100, 80, true, 0x00000000); var bmd2:BitmapData = bmd1.clone(); bmd1.setPixel32(1, 1, 0xFFFFFFFF); trace(bmd1.getPixel32(1, 1)); // 4294967295 == 0xFFFFFFFF trace(bmd2.getPixel32(1, 1)); // 0
public function colorTransform(rect:Rectangle, colorTransform:ColorTransform):void
ColorTransform object. If the rectangle
matches the boundaries of the bitmap image, this method transforms the color values of
the entire image.
Parameters
rect:Rectangle — A Rectangle object that defines the area of the image in which the
ColorTransform object is applied.
|
|
colorTransform:ColorTransform — A ColorTransform object that describes the color transformation
values to apply.
|
import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000); var cTransform:ColorTransform = new ColorTransform(); cTransform.alphaMultiplier = 0.5 var rect:Rectangle = new Rectangle(0, 0, 40, 30); bmd.colorTransform(rect, cTransform);
| flash.geom.ColorTransform, flash.geom.Rectangle |
public function compare(otherBitmapData:BitmapData):Object
For example, consider the following two BitmapData objects:
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2);
Note: The colors used to fill the two BitmapData object have slightly different RGB values
(0xFF0000 and 0xFFAA00). The result of the compare() method is a new BitmapData
object with each pixel showing the difference in the RGB values between the two bitmaps.
Consider the following two BitmapData objects, in which the RGB colors are the same, but the alpha values are different:
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2);
The result of the compare() method is a new BitmapData
object with each pixel showing the difference in the alpha values between the two bitmaps.
If the BitmapData objects are equivalent (with the same width, height, and identical pixel values), the method returns the number 0.
If the widths of the BitmapData objects are not equal, but the heights are the same, the method returns the number -3.
If the heights of the BitmapData objects are not equal, but the widths are the same, the method returns the number -4.
The following example compares two Bitmap objects with different widths (50 and 60):
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -3
otherBitmapData:BitmapData — The BitmapData object to compare with the source BitmapData object.
|
Object —
If the two BitmapData objects have the same dimensions (width and height), the
method returns a new BitmapData object that has the difference between the two objects (see the
main discussion). If the BitmapData objects are equivalent, the method returns the number 0.
If the widths of the BitmapData objects are not equal, the method returns the number -3.
If the heights of the BitmapData objects are not equal, the method returns the number -4.
|
import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2)); var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16); trace (diffValue); // 33ffffff
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
The source channel value and destination channel value can be one of following values:
BitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEBitmapDataChannel.ALPHAsourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different BitmapData object
or it can refer to the current BitmapData object.
|
|
sourceRect:Rectangle — The source Rectangle object. To copy only channel data from a smaller area
within the bitmap, specify a source rectangle that is smaller than the overall size of the
BitmapData object.
|
|
destPoint:Point — The destination Point object that represents the upper-left corner of the rectangular area
where the new channel data is placed.
To copy only channel data
from one area to a different area in the destination image, specify a point other than (0,0).
|
|
sourceChannel:uint — The source channel. Use a value from the BitmapDataChannel class
(BitmapDataChannel.RED, BitmapDataChannel.BLUE,
BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).
|
|
destChannel:uint — The destination channel. Use a value from the BitmapDataChannel class
(BitmapDataChannel.RED, BitmapDataChannel.BLUE,
BitmapDataChannel.GREEN, BitmapDataChannel.ALPHA).
|
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);
| flash.geom.Rectangle |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
If you include the alphaBitmap and alphaPoint parameters, you can use a secondary
image as an alpha source for the source image. If the source
image has alpha data, both sets of alpha data are used to
composite pixels from the source image to the destination image. The
alphaPoint parameter is the point in the alpha image that
corresponds to the upper-left corner of the source
rectangle. Any pixels outside the intersection of the source
image and alpha image are not copied to the destination image.
The mergeAlpha property controls whether or not the alpha
channel is used when a transparent image is copied onto
another transparent image. To copy
pixels (with no alpha used), set the mergeAlpha
property to false, and all pixels are copied from
source to destination. By default, the mergeAlpha property is
true.
sourceBitmapData:BitmapData — The input bitmap image from which to copy pixels. The source image can be a
different BitmapData instance, or it can refer to the current BitmapData
instance.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The destination point, that represents the upper-left corner of the rectangular
area where the new pixels are placed.
|
|
alphaBitmapData:BitmapData (default = null) — A secondary, alpha BitmapData object source.
|
|
alphaPoint:Point (default = null) — The point in the alpha BitmapData object source that corresponds to
the upper-left corner of the sourceRect parameter.
|
|
mergeAlpha:Boolean (default = false) — To use the alpha channel, set the value to
true. To copy pixels with no alpha channel, set the value to
false.
|
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF); var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd2.copyPixels(bmd1, rect, pt);
public function dispose():void
When this method is called on an image, the width and height of the image are set to 0. All subsequent calls to methods or properties of this BitmapData instance fail, and an exception is thrown.
Exampledispose() method (an exception is thrown):
import flash.display.BitmapData;
var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF
myBitmapData.dispose();
try {
trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
trace(error); // ArgumentError
}
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
source display object onto the bitmap image, using the
Flash Player vector renderer. You can specify matrix, colorTransform,
BlendMode, and a destination clipRect parameter to control
how the rendering performs. Optionally, you can specify whether the bitmap
should be smoothed when scaled (this works only if the source object
is a BitmapData object).
This method directly corresponds to how objects are drawn using the standard vector renderer for objects in the authoring tool interface.
The source display object does not use any of its on-stage transformations
for this call. It is treated as it exists in the library or
file, with no matrix transform, no color transform, and no blend
mode. To draw a display object (such as a movie clip) by using its own transform properties,
you can copy its transform property object to the transform property
of the Bitmap object that uses the BitmapData object.
Security note: The source object and (in the case of
a Sprite or MovieClip object) all of its child objects must come from the same domain as
the caller, or must be within a SWF file that is accessible to the caller by having called the
Security.allowDomain() method. If these conditions are not met,
the draw() method does not draw anything.
source:IBitmapDrawable — The display object or BitmapData object to draw to the BitmapData object.
(The DisplayObject and BitmapData classes implement the IBitmapDrawable interface.)
|
|
matrix:Matrix (default = null) — A Matrix object used to scale, rotate, or translate the coordinates
of the bitmap. If you do not want to apply a matrix transformation to the image,
set this parameter to an identity matrix, created using the default
new Matrix() constructor, or pass a null value.
|
|
colorTransform:ColorTransform (default = null) — A ColorTransform object that you use to adjust the color values of
the bitmap. If no object is supplied, the bitmap image's colors are not transformed.
Set this parameter to a ColorTransform object created by using the default new ColorTransform()
constructor, if you must pass this parameter but you do not want to transform the image.
|
|
blendMode:String (default = null) — A string value, from the flash.display.BlendMode class, specifying the
blend mode be applied to the resulting bitmap.
|
|
clipRect:Rectangle (default = null) — A Rectangle object that defines the area of the source object to draw.
If you do not supply this value, no clipping occurs and the entire source object is drawn.
|
|
smoothing:Boolean (default = false) — A Boolean value that determines whether a BitmapData object is
smoothed when scaled.
|
import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "foo"; var myBitmapData:BitmapData = new BitmapData(20, 20); myBitmapData.draw(tf); var bmp:Bitmap = new Bitmap(myBitmapData);
ArgumentError — If the source parameter is not a BitmapData
or DisplayObject object.
|
|
SecurityError — If the source object and (in the case of
a Sprite or MovieClip object) all of its child objects do not come from the same domain as
the caller, or are not within a SWF file that is accessible to the caller by having called the
Security.allowDomain() method.
|
| flash.geom.Matrix, flash.geom.ColorTransform, flash.display.BlendMode |
public function fillRect(rect:Rectangle, color:uint):void
rect:Rectangle — The rectangular area to fill.
|
|
color:uint — The ARGB color value that fills the area. ARGB colors are often
specified in hexadecimal format; for example, 0xFF336699.
|
import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x0000FF);
| flash.geom.Rectangle |
public function floodFill(x:int, y:int, color:uint):void
floodFill() method is similar to the paint bucket tool in various paint
programs. The color is an ARGB color that contains alpha information and
color information.
Parameters
x:int — The x coordinate of the image.
|
|
y:int — The y coordinate of the image.
|
|
color:uint — The ARGB color to use as a fill.
|
(10, 10) in which all colors match the color at that point, and fill that
region with red:
import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x000000FF); rect = new Rectangle(15, 15, 25, 25); myBitmapData.fillRect(rect, 0x000000FF); myBitmapData.floodFill(10, 10, 0x00FF0000);
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle
applyFilter() method call affects, given a
BitmapData object, a source rectangle, and a filter object.
For example, a blur filter normally affects an area larger than the size of the original
image. A 100 x 200 pixel image that is being filtered by a default BlurFilter
instance, where blurX = blurY = 4 generates a destination rectangle of
(-2,-2,104,204).
The generateFilterRect() method lets you find out the size of this destination
rectangle in advance so that you can size the destination image appropriately before you perform a filter
operation.
Some filters clip their destination rectangle based on the source image size.
For example, an inner DropShadow does not generate a larger result than its source
image. In this API, the BitmapData object is used as the source bounds and not the
source rect parameter.
sourceRect:Rectangle — A rectangle defining the area of the source image to use as input.
|
|
filter:BitmapFilter — A filter object that you use to calculate the destination rectangle.
|
Rectangle —
A destination rectangle computed by using an image, the sourceRect parameter,
and a filter.
|
generateFilterRect() method to
determine the rectangular area that the result of a blur filter will occupy. The results of the
generateFilterRect() method are output via a trace() method:
import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); trace(bmd.generateFilterRect(rect, filter));
gererateFilterRect() method does not apply the filter. Call the applyFilter() method
to apply the filter.
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
findColor parameter is set to true) or fully encloses
all pixels that do not include the specified color (if the findColor parameter is set
to false).
For example, if you have a source image and you want to determine the rectangle of
the image that contains a nonzero alpha channel, pass
{mask: 0xFF000000, color: 0x00000000} as parameters. If the findColor
parameter is set to true, the entire image is searched for the bounds of pixels
for which (value & mask) == color (where value is the color value
of the pixel). If the findColor parameter is set to false, the entire
image is searched for the bounds of pixels for which (value & mask) != color
(where value is the color value of the pixel). To determine white space around an
image, pass {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}
to find the bounds of nonwhite pixels.
mask:uint — A hexadecimal value, specifying the bits of the ARGB color to consider. The color
value is combined with this hexadecimal value, via the & operator.
|
|
color:uint — A hexadecimal value, specifying the ARGB color to match (if findColor
is set to true) or to not match (if findColor
is set to false).
|
|
findColor:Boolean (default = true) — If the value is set to true, returns the bounds of a color value in an image.
If the value is set to false, returns the bounds of where this color doesn't exist in an image.
|
Rectangle —
The region of the image that is the specified color.
|
getColorBoundsRect() method to determine the rectangle in which pixels are red (0xFF0000), and
then it calls the same method to determine the rectangle in which pixels are not red (by setting the
findColor parameter to false:
import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF); var rect:Rectangle = new Rectangle(0, 0, 80, 20); bmd.fillRect(rect, 0xFF0000); var mask:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(mask, color, true); trace(redBounds); // (x=0, y=0, w=80, h=20) var NotRedBounds:Rectangle = bmd.getColorBoundsRect(mask, color, false); trace(NotRedBounds); // (x=0, y=20, w=80, h=20)
public function getPixel(x:int, y:int):uint
getPixel() method returns an
unmultiplied pixel value. No alpha information is returned.
All pixels in a BitmapData object are stored as premultiplied color values. A premultiplied image pixel has the red, green, and blue color channel values already multiplied by the alpha data. For example, if the alpha value is 0, the values for the RGB channels are also 0, independent of their unmultiplied values.
This loss of data can cause some problems when you are performing operations. All Flash Player methods take and return unmultiplied values. The internal pixel representation is converted from premultiplied to unmultiplied before it is returned as a value. During a set operation, the pixel value is premultiplied before setting the raw image pixel.
Parametersx:int — The x position of the pixel.
|
|
y:int — The y position of the pixel.
|
uint —
A number that represents an RGB pixel value. If the (x, y) coordinates are
outside the bounds of the image, the method returns 0. If the bitmap was created as an opaque bitmap and
not a transparent one, and the point specified is within the bounds of the image, the method
returns an error code of -1.
|
getPixel() method to determine the color value in the upper left-hand pixel:
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(1, 1); trace(pixelValue.toString(16)); // ff0000;
| getPixel32(), setPixel() |
public function getPixel32(x:int, y:int):uint
getPixel() method, which returns an
RGB color without alpha channel data.
Parameters
x:int — The x position of the pixel.
|
|
y:int — The y position of the pixel.
|
uint —
A number representing an ARGB pixel value. If the (x, y) coordinates are
outside the bounds of the image, 0 is returned.
|
getPixel32() method to determine the color value in the upper-lefthand pixel, and then it
determines the hexidecimal values for each color component (alpha, red, green, and blue):
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(1, 1); var alpha:uint = pixelValue >> 24 & 0xFF; var red:uint = pixelValue >> 16 & 0xFF; var green:uint = pixelValue >> 8 & 0xFF; var blue:uint = pixelValue & 0xFF; trace(alpha.toString(16)); // ff trace(red.toString(16)); // 44 trace(green.toString(16)); // aa trace(blue.toString(16)); // cc
| getPixel(), setPixel32() |
public function getPixels(rect:Rectangle):ByteArray
rect:Rectangle — A rectangular area in the current BitmapData object.
|
ByteArray —
A ByteArray representing the pixels in the given Rectangle.
|
getPixels() method to fill a ByteArray object with the pixel values of the BitmapData object
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.utils.ByteArray; var bmd:BitmapData = new BitmapData(80, 40, true); var seed:int = int(Math.random() * int.MAX_VALUE); bmd.noise(seed); var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height); var pixels:ByteArray = bmd.getPixels(bounds);
| flash.utils.ByteArray |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
If an image is an opaque image, it is considered a fully opaque rectangle for this method. Both images must be transparent images to perform pixel-level hit testing that considers transparency. When you are testing two transparent images, the alpha threshold parameters control what alpha channel values, from 0 to 255, are considered opaque.
ParametersfirstPoint:Point — A position of the top-left corner of the BitmapData image in an arbitrary coordinate space.
The same coordinate space is used in defining the secondBitmapPoint parameter.
|
|
firstAlphaThreshold:uint — The highest alpha channel value that is considered opaque for this hit test.
|
|
secondObject:Object — A Rectangle, Point, Bitmap, or BitmapData object.
|
|
secondBitmapDataPoint:Point (default = null) — A point that defines a pixel location in the second BitmapData object.
Use this parameter only when the value of secondObject is a
BitmapData object.
|
|
secondAlphaThreshold:uint (default = 1) — The highest alpha channel value that is considered opaque in the second BitmapData object.
Use this parameter only when the value of secondObject is a
BitmapData object and both BitmapData objects are transparent.
|
Boolean —
A Boolean value. If there is a hit, returns a value of true; otherwise, false.
|
getPixels() method with a Point as the secondObject.
In the first call, the Point defines the upper left-hand corner of the BitmapData object, which is not opaque, and
In the second call, the Point defines the center of the BitmapData object, which is opaque.
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000); var rect:Rectangle = new Rectangle(20, 20, 40, 40); bmd1.fillRect(rect, 0xFF0000FF); var pt1:Point = new Point(1, 1); trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false var pt2:Point = new Point(40, 40); trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
ArgumentError — If the secondObject parameter is not a Point, Rectangle,
Bitmap, or BitmapData object.
|
public function lock():void
unlock() method before and after numerous calls to the
setPixel() or setPixel32() method.
Example
bitmapData property of a Bitmap object, picture.
It then calls the lock() method before calling a complicated custom function,
complexTransformation(), that modifies the BitmapData. (The picture object
and the complexTransformation() function are not defined in this example.) Even if the
complexTransformation() function updates the bitmapData property of
the picture object, changes are not reflected until the code calls the
unlock() method on the bitmapData object:
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
| unlock(), setPixel(), setPixel32() |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
new red dest = (red source * redMultiplier) + (red dest * (256 - redMultiplier) / 256;
The redMultiplier, greenMultiplier, blueMultiplier, and alphaMultiplier values
are the multipliers used for each color channel. Their valid range is from 0 to 256.
sourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different
BitmapData object, or it can refer to the current BitmapData object.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The point within the destination image (the current BitmapData
instance) that corresponds to the upper-left corner of the source rectangle.
|
|
redMultiplier:uint — A number by which to multiply the red channel value.
|
|
greenMultiplier:uint — A number by which to multiply the green channel value.
|
|
blueMultiplier:uint — A number by which to multiply the blue channel value.
|
|
alphaMultiplier:uint — A number by which to multiply the alpha transparency value.
|
merge() method, merging
the second BitmapData pixels into the first BitmapData object, but only on a specified rectangular area:
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00); var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(20, 20); var mult:uint = 0x80; // 50% bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
randomSeed:int — The random seed number to use. If you keep all other parameters
the same, you can generate different pseudo-random results by varying the random seed value. The noise
function is a mapping function, not a true random-number generation function, so it creates the same
results each time from the same random seed.
|
|
low:uint (default = 0) — The lowest value to generate for each channel (0 to 255).
|
|
high:uint (default = 255) — The highest value to generate for each channel (0 to 255).
|
|
channelOptions:uint (default = 7) — A number that can be a combination of any of
the four color channel values (BitmapDataChannel.RED,
BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, and
BitmapDataChannel.ALPHA). You can use the logical OR
operator (|) to combine channel values.
|
|
grayScale:Boolean (default = false) — A Boolean value. If the value is true, a grayscale image is created by setting
all of the color channels to the same value.
The alpha channel selection is not affected by
setting this parameter to true.
|
noise()
method on both. However, the grayscale parameter is set to false for the
first object's call to the noise() method, and it is set to true for the other
object's call to the noise() method:
import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(80, 80); var bmd2:BitmapData = new BitmapData(80, 80); var seed:int = int(Math.random() * int.MAX_VALUE); bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false); bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);
| flash.display.BitmapDataChannel.RED, flash.display.BitmapDataChannel.BLUE, flash.display.BitmapDataChannel.GREEN, flash.display.BitmapDataChannel.ALPHA |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Flash Player uses the following steps to generate the resulting image:
After the red, green, blue, and alpha values are computed, they are added together using standard 32-bit-integer arithmetic. The red, green, blue, and alpha channel values of each pixel are extracted into separate 0 to 255 values. These values are used to look up new color values in the appropriate array:redArray,greenArray,blueArray, andalphaArray. Each of these four arrays should contain 256 values. After all four of the new channel values are retrieved, they are combined into a standard ARGB value that is applied to the pixel.
Cross-channel effects can be supported with this method. Each input array can contain full 32-bit values, and no shifting occurs when the values are added together. This routine does not support per-channel clamping.
If no array is specified for a channel, the color channel is copied from the source image to the destination image.
You can use this method for a variety of effects such as general palette mapping (taking one channel and converting it to a false color image). You can also use this method for a variety of advanced color manipulation algorithms, such as gamma, curves, levels, and quantizing.
ParameterssourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different
BitmapData object, or it can refer to the current BitmapData instance.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The point within the destination image (the current BitmapData
object) that corresponds to the upper-left corner of the source rectangle.
|
|
redArray:Array (default = null) — If redArray is not null, red = redArray[source red value]
else red = source rect value.
|
|
greenArray:Array (default = null) — If greenArray is not null, green = greenArray[source
green value] else green = source green value.
|
|
blueArray:Array (default = null) — If blueArray is not null, blue = blueArray[source blue
value] else blue = source blue value.
|
|
alphaArray:Array (default = null) — If alphaArray is not null, alpha = alphaArray[source
alpha value] else alpha = source alpha value.
|
paletteMap() method to swap red with green in the bottom rectangular half of the
BitmapData object:
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);
var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);
for(var i:uint = 0; i < 255; i++) {
redArray[i] = 0x00000000;
greenArray[i] = 0x00000000;
}
redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;
var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
The Perlin noise generation algorithm interpolates and combines individual random noise functions (called octaves) into a single function that generates more natural-seeming random noise. Like musical octaves, each octave function is twice the frequency of the one before it. Perlin noise has been described as a "fractal sum of noise" because it combines multiple sets of noise data with different levels of detail.
You can use Perlin noise functions to simulate natural phenomena and landscapes, such as wood grain, clouds, and mountain ranges. In most cases, the output of a Perlin noise function is not displayed directly but is used to enhance other images and give them pseudo-random variations.
Simple digital random noise functions often produce images with harsh, contrasting points. This kind of harsh contrast is not often found in nature. The Perlin noise algorithm blends multiple noise functions that operate at different levels of detail. This algorithm results in smaller variations among neighboring pixel values.
Note: The Perlin noise algorithm is named for Ken Perlin, who developed it after generating computer graphics for the 1982 film Tron. Perlin received an Academy Award for Technical Achievement for the Perlin noise function in 1997.
ParametersbaseX:Number — Frequency to use in the x direction. For example, to generate a noise that
is sized for a 64 x 128 image, pass 64 for the baseX value.
|
|
baseY:Number — Frequency to use in the y direction. For example, to generate a noise that
is sized for a 64 x 128 image, pass 128 for the baseY value.
|
|
numOctaves:uint — Number of octaves or individual noise functions to combine to create this noise. Larger numbers of octaves create
images with greater detail. Larger numbers of octaves also require more processing time.
|
|
randomSeed:int — The random seed number to use. If you keep all other parameters the same, you can generate different
pseudo-random results by varying the random seed value. The Perlin noise function is a mapping function, not a
true random-number generation function, so it creates the same results each time from the same random seed.
|
|
stitch:Boolean — A Boolean value. If the value is true, the method attempts to smooth the transition edges of the image to create seamless textures for
tiling as a bitmap fill.
|
|
fractalNoise:Boolean — A Boolean value. If the value is true, the method generates fractal noise; otherwise,
it generates turbulence. An image with turbulence has visible discontinuities in the gradient
that can make it better approximate sharper visual effects like flames and ocean waves.
|
|
channelOptions:uint (default = 7) — A number that can be a combination of any of
the four color channel values (BitmapDataChannel.RED,
BitmapDataChannel.BLUE, BitmapDataChannel.GREEN, and
BitmapDataChannel.ALPHA). You can use the logical OR
operator (|) to combine channel values.
|
|
grayScale:Boolean (default = false) — A Boolean value. If the value is true, a grayscale image is created by setting
each of the red, green, and blue color channels to
identical values. The alpha channel value is not affected if this value is
set to true.
|
|
offsets:Array (default = null) — An array of points that correspond to x and y offsets for each octave.
By manipulating the offset values you can smoothly scroll the layers of a perlinNoise image.
Each point in the offset array affects a specific octave noise function.
|
perlinNoise() mehod generate a red and blue watercolor effect:
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC); var seed:Number = Math.floor(Math.random() * 10); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);
bitmapData property of a
Bitmap object that is on the display list.
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
randomSeed value
to generate a random pixel dissolve. The return value
of the function must be passed in on subsequent calls to
continue the pixel dissolve until it is finished.
If the source image does not equal the destination image, pixels are copied from the source to the destination by using all of the properties. This allows dissolving from a blank image into a fully populated image.
If the source and destination images are equal, pixels are
filled with the color parameter. This allows dissolving away
from a fully populated image. In this mode, the destination
point parameter is ignored.
sourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different
BitmapData object, or it can refer to the current BitmapData instance.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The point within the destination image (the current BitmapData
instance) that corresponds to the upper-left corner of the source rectangle.
|
|
randomSeed:int (default = 0) — The random seed to use to start the pixel dissolve.
|
|
numPixels:int (default = 0) — The default is 1/30 of the source area (width x height).
|
|
fillColor:uint (default = 0) — An ARGB color value that you use to fill pixels whose
source value equals its destination value.
|
int —
The new random seed value to use for subsequent calls.
|
pixelDissolve()
method to convert a grey BitmapData object to a red one by dissolving
40 pixels at a time until all pixels have changed colors:
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;
var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
function timerHandler(event:TimerEvent):void {
var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
dissolve(randomNum);
}
function dissolve(randomNum:Number):void {
var rect:Rectangle = bmd.rect;
var pt:Point = new Point(0, 0);
var numberOfPixels:uint = 100;
var red:uint = 0x00FF0000;
bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
if(grayRegion.width == 0 && grayRegion.height == 0 ) {
tim.stop();
}
}
bitmapData property of a
Bitmap object that is on the display list.
public function scroll(x:int, y:int):void
x:int — The amount by which to scroll horizontally.
|
|
y:int — The amount by which to scroll vertically.
|
import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC); var rect:Rectangle = new Rectangle(0, 0, 40, 40); bmd.fillRect(rect, 0xFFFF0000); trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc bmd.scroll(30, 0); trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000
public function setPixel(x:int, y:int, color:uint):void
Note: To increase performance, when using the setPixel() or
setPixel32() methods repeatedly, call the lock() method prior to
calling the setPixel() or setPixel32() methods, and then call
the unlock() once you have made all pixel changes. This prevents objects
that reference this BitmapData instance from updating until you have completed making
the pixel changes.
x:int — The x position of the pixel whose value changes.
|
|
y:int — The y position of the pixel whose value changes.
|
|
color:uint — The resulting RGB color for the pixel.
|
setPixel()
method to draw a red line in a BitmapData object:
import flash.display.BitmapData;
var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);
for (var i:uint = 0; i < 80; i++) {
var red:uint = 0xFF0000;
bmd.setPixel(i, 40, red);
}
| getPixel(), setPixel32(), lock(), unlock() |
public function setPixel32(x:int, y:int, color:uint):void
setPixel() method; the main difference is
that the setPixel32() method takes an
ARGB color value that contains alpha channel information.
Note: To increase performance, when using the setPixel() or
setPixel32() methods repeatedly, call the lock() method prior to
calling the setPixel() or setPixel32() methods, and then call
the unlock() once you have made all pixel changes. This prevents objects
that reference this BitmapData instance from updating until you have completed making
the pixel changes.
x:int — The x position of the pixel whose value changes.
|
|
y:int — The y position of the pixel whose value changes.
|
|
color:uint — The resulting ARGB color for the pixel. If the bitmap is opaque
(not transparent), the alpha transparency portion of this color value is ignored.
|
setPixel32()
method to draw a transparent (alpha == 0x60) red line in a BitmapData object:
import flash.display.BitmapData;
var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
for (var i:uint = 0; i < 80; i++) {
var red:uint = 0x60FF0000;
bmd.setPixel32(i, 40, red);
}
| setPixel(), getPixel32(), lock(), unlock() |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void
ByteArray.readUnsignedInt() method is called and the return value is
written into the pixel. If the ByteArray ends before the full rectangle
is written, the function returns. The data in the ByteArray is
expected to be 32-bit ARGB pixel values. No seeking is performed
on the ByteArray before or after the pixels are read.
Parameters
rect:Rectangle — Specifies the rectangular region of the BitmapData.
|
|
inputByteArray:ByteArray — A ByteArray consisting of 32-bit unmultiplied pixel values
to be used in the rectangular region.
|
getPixels() and
setPixels() methods to copy pixels from one BitmapData object to another:
import flash.display.BitmapData; import flash.utils.ByteArray; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC); var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 100, 100); var bytes:ByteArray = bmd1.getPixels(rect); bytes.position = 0; bmd2.setPixels(rect, bytes);
EOFError — The inputByteArray object does not include enough data
to fill the area of the rect Rectangle. The method fills as many pixels as
possible before throwing the exception.
|
| flash.utils.ByteArray.readUnsignedInt() |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
threshold() method, you can isolate and replace color ranges in an image and perform other
logical operations on image pixels.
The threshold() method's test logic is as follows:
((pixelValue & mask) operation (threshold & mask)), then
set the pixel to color;copySource == true, then
set the pixel to corresponding pixel value from sourceBitmap.The operation parameter specifies the comparison operator to use for the threshold test.
For example, by using "==" as the operation parameter, you
can isolate a specific color value in an image. Or by using {operation:
"<", mask: 0xFF000000, threshold: 0x7F000000, color:
0x00000000}, you can set all destination pixels to be fully transparent
when the source image pixel's alpha is less than 0x7F. You can use this technique
for animated transitions and other effects.
sourceBitmapData:BitmapData — The input bitmap image to use. The source image can be a different
BitmapData object or it can refer to the current BitmapData instance.
|
|
sourceRect:Rectangle — A rectangle that defines the area of the source image to use as input.
|
|
destPoint:Point — The point within the destination image (the current BitmapData
instance) that corresponds to the upper-left corner of the source rectangle.
|
|
operation:String — One of the following comparison operators, passed as a String: "<", "<=", ">", ">=", "==", "!="
|
|
threshold:uint — The value that each pixel is tested against to see if it meets or exceeds the threshhold.
|
|
color:uint (default = 0) — The color value that a pixel is set to if the threshold test succeeds. The default value is 0x00000000.
|
|
mask:uint (default = 0xFFFFFFFF) — The mask to use to isolate a color component.
|
|
copySource:Boolean (default = false) — A Boolean value. If the value is true, pixel values from the source image are copied to the destination
when the threshold test fails. If the value is false, the source image is not copied when the
threshold test fails.
|
uint —
The number of pixels that were changed.
|
perlinNoise() method to
add a blue and red pattern to one BitmapData object, and then uses the threshold()
method to copy those pixels from the first BitmapData object to a second one, replacing those pixels
in which the red value is greater than 0x80 (50%) with a pixel set to transparent red (0x20FF0000):
import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var seed:int = int(Math.random() * int.MAX_VALUE); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var pt:Point = new Point(0, 0); var rect:Rectangle = new Rectangle(0, 0, 200, 200); var threshold:uint = 0x00800000; var color:uint = 0x20FF0000; var mask:uint = 0x00FF0000; bmd2.threshold(bmd1, rect, pt, ">", threshold, color, mask, true);
bitmapData property of two
Bitmap objects that are on the display list.
public function unlock(changeRect:Rectangle = null):void
lock() method before and after numerous calls to the
setPixel() or setPixel32() method.
Parameters
changeRect:Rectangle (default = null) — The area of the BitmapData object that has changed. If you specify no value for
this parameter, the entire area of the BitmapData object is considered
changed.
|
bitmapData property of a Bitmap object, picture.
It then calls the lock() method before calling a complicated custom function,
complexTransformation(), that modifies the BitmapData. (The picture object
and the complexTransformation() function are not defined in this example.) Even if the
complexTransformation() function updates the bitmapData property of
the picture object, changes are not reflected until the code calls the
unlock() method on the bitmapData object:
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
| lock(), setPixel(), setPixel32() |
BitmapDataExample to load the
image "Image.gif" into a DisplayObject in the default location (x = 0, y = 0) and then a copy
of Image.gif is placed to the right of the original, which has new colors applied to pixels
that pass a test using the threshold() method.
This is accomplished using the following steps:
url is created, which is the location and name of the image filecompleteHandler() completes the image manipulation.buildChild() creates a new instance of a URLRequest object,
request, with url passed so the file name and location are known.request is then passed to loader.load(), which loads the image
into memory via a DisplayObject.completeHandler() method then duplicate, which in turn calls
duplicateImage(), which creates a duplicate of the original image. duplicate's
BitmapData object.operation: applies the new color (shown below) when the threshold
value is >= the original.threshold: the value against which each pixel is compared is set to
light gray with an alpha of 0xCC. color: the color that the pixels will be set to that pass the threshold
test, which is solid yellow in this case.mask: set to the exact opposite of color, (transparent blue).copySource: set to false, indicating the pixel values are not copied
in the event the threshold value does not pass. This really has no meaning since
the image is duplicated and only pixels that pass the threshold test are changed.threshold() method using the above variables. The resulting threshold
equation is as follows: if (current pixel Value & 0x000000FF) >=
(0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00. Notes:
package {
import flash.net.URLRequest;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.events.*;
import flash.display.*;
public class BitmapDataExample extends Sprite {
private var url:String = "Image.gif";
private var size:uint = 80;
public function BitmapDataExample() {
configureAssets();
}
private function configureAssets():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
var request:URLRequest = new URLRequest(url);
loader.x = size * numChildren;
loader.load(request);
addChild(loader);
}
private function duplicateImage(original:Bitmap):Bitmap {
var image:Bitmap = new Bitmap(original.bitmapData.clone());
image.x = size * numChildren;
addChild(image);
return images;
}
private function completeHandler(event:Event):void {
var loader:Loader = Loader(event.target.loader);
var image:Bitmap = Bitmap(loader.content);
var duplicate:Bitmap = duplicateImage(image);
var bitmapData:BitmapData = duplicate.bitmapData;
var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
var destPoint:Point = new Point();
var operation:String = ">=";
var threshold:uint = 0xCCCCCCCC;
var color:uint = 0xFFFFFF00;
var mask:uint = 0x000000FF;
var copySource:Boolean = true;
bitmapData.threshold(bitmapData,
sourceRect,
destPoint,
operation,
threshold,
color,
mask,
copySource);
}
}
}
Send me an e-mail when comments are added to this page | Comment Report
Current page: http://livedocs.adobe.com/labs/flashauthoringpreview/flash/display/BitmapData.html