| |||||||
| |||||||
| |||||||
| Package | flash.display |
| Class | public class BitmapData |
| Inheritance | BitmapData Object |
| Implements | IBitmapDrawable |
| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader class.This class lets you separate bitmap rendering operations from the internal display updating routines of Flash Player. 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 theBitmapData.copyChannel() method or theDisplacementMapFilter.componentX andDisplacementMapFilter.componentY properties, and these numbers are represented by the following constants in the BitmapDataChannel class:
BitmapDataChannel.ALPHABitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEYou can attach BitmapData objects to a Bitmap object by using thebitmapData property of the Bitmap object.
You can use a BitmapData object to fill a Graphics object by using theGraphics.beginBitmapFill() method.
In the AIR runtime, the DockIcon, Icon, InteractiveIcon, and SystemTrayIcon classes each include abitmaps property that is an array of BitmapData objects that define the bitmap images for an icon.
In AIR 1.5 and Flash Player 10, the maximum size for a BitmapData object is 8,191 pixels in width or height, and the total number of pixels cannot exceed 16,777,215 pixels. (So, if a BitmapData object is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height and 2,880 in width.
Starting with AIR 3 and Flash player 11, the size limits for a BitmapData object have been removed. The maximum size of a bitmap is now dependent on the operating system.
Calls to any method or property of a BitmapData object throw an ArgumentError error if the BitmapData object is invalid (for example, if it hasheight == 0 andwidth == 0) or it has been disposed of via dispose().
More examples
Learn more
Related API Elements
| 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 | ||
| 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 | ||
| Method | 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 | ||
Fills a byte array from a rectangular region of pixel data. | BitmapData | ||
Frees memory that is used to store the BitmapData object. | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void Draws the source display object onto the bitmap image, using the Flash runtime vector renderer. | BitmapData | ||
drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void Draws the source display object onto the bitmap image, using the Flash runtime vector renderer. | BitmapData | ||
Compresses this BitmapData object using the selected compressor algorithm and returns a new ByteArray object. | 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 | ||
Generates a vector array from a rectangular region of pixel data. | BitmapData | ||
![]() | Indicates whether an object has a specified property defined. | Object | |
Computes a 256-value binary number histogram of a BitmapData object. | BitmapData | ||
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 object, such as Bitmap objects, are not updated when this BitmapData object 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 byte array into a rectangular region of pixel data. | BitmapData | ||
![]() | Sets the availability of a dynamic property for loop operations. | Object | |
Converts a Vector into a rectangular region of pixel data. | BitmapData | ||
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 this object, formatted according to locale-specific conventions. | Object | |
![]() | Returns the string representation of the specified object. | Object | |
Unlocks an image so that any objects that reference the BitmapData object, such as Bitmap objects, are updated when this BitmapData object changes. | BitmapData | ||
![]() | Returns the primitive value of the specified object. | Object | |
height | property |
rect | property |
rect:Rectangle [read-only]| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
The rectangle that defines the size and location of the bitmap image. The top and left of the rectangle are 0; the width and height are equal to the width and height in pixels of the BitmapData object.
public function get rect():Rectangletransparent | property |
transparent:Boolean [read-only]| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Defines whether the bitmap image supports per-pixel transparency. You can set this value only when you construct a BitmapData object by passing intrue for thetransparent parameter of the constructor. Then, after you create a BitmapData object, you can check whether it supports per-pixel transparency by determining if the value of thetransparent property istrue.
public function get transparent():Booleanwidth | property |
BitmapData | () | Constructor |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Creates a BitmapData object with a specified width and height. If you specify a value for thefillColor parameter, every pixel in the bitmap is set to that color.
By default, the bitmap is created as transparent, unless you pass the valuefalse for thetransparent parameter. After 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.
In AIR 1.5 and Flash Player 10, the maximum size for a BitmapData object is 8,191 pixels in width or height, and the total number of pixels cannot exceed 16,777,215 pixels. (So, if a BitmapData object is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height and 2,880 pixels in width. 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 istrue (transparent). To create a fully transparent bitmap, set the value of thetransparent parameter totrue and the value of thefillColor parameter to 0x00000000 (or to 0). Setting thetransparent property tofalse can result in minor improvements in rendering performance. | |
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). |
ArgumentError — width and/or height exceed the maximum dimensions. |
applyFilter | () | method |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Takes a source image and a filter object and generates the filtered image.
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 theapplyFilter() call.
If thesourceRect parameter of thesourceBitmapData parameter is an interior region, such as (50,50,100,100) in a 200 x 200 image, the filter uses the source pixels outside thesourceRect parameter to generate the destination rectangle.
If the BitmapData object and the object specified as thesourceBitmapData parameter are the same object, the application uses a temporary copy of the object to perform the filter. For best performance, avoid this situation.
Parameters
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:
|
TypeError — The sourceBitmapData, sourceRect, destPoint or filter are null. | |
IllegalOperationError — The transparency of the BitmapData objects are not compatible with the filter operation. |
More examples
Related API Elements
import flash.display.Bitmap;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);var bm:Bitmap = new Bitmap(bmd);addChild(bm);
clone | () | method |
public function clone():BitmapData| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Returns a new BitmapData object that is a clone of the original instance with an exact copy of the contained bitmap.
ReturnsBitmapData — A new BitmapData object that is identical to the original. |
import flash.display.Bitmap;import flash.display.BitmapData;var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000);var bmd2:BitmapData = bmd1.clone();bmd1.setPixel32(1, 1, 0xFFFFFFFF);trace(bmd1.getPixel32(1, 1).toString(16)); // fffffffftrace(bmd2.getPixel32(1, 1).toString(16)); // ff000000var bm1:Bitmap = new Bitmap(bmd1);this.addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);bm2.x = 110;this.addChild(bm2);
colorTransform | () | method |
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Adjusts the color values in a specified area of a bitmap image by using aColorTransform 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:flash.geom:ColorTransform — A ColorTransform object that describes the color transformation values to apply. |
TypeError — The rect or colorTransform are null. |
Related API Elements
import flash.display.Bitmap;import flash.display.BitmapData;import flash.geom.Rectangle;import flash.geom.ColorTransform;var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);var cTransform:ColorTransform = new ColorTransform();cTransform.alphaMultiplier = 0.5var rect:Rectangle = new Rectangle(0, 0, 40, 30);bmd.colorTransform(rect, cTransform);var bm:Bitmap = new Bitmap(bmd);addChild(bm);
compare | () | method |
public function compare(otherBitmapData:BitmapData):Object| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Compares two BitmapData objects. If the two BitmapData objects have the same dimensions (width and height), the method returns a new BitmapData object, in which each pixel is the "difference" between the pixels in the two source objects:
otherBitmapData object). Alpha channel differences are ignored in this case.otherBitmapData object).For example, consider the following two BitmapData objects:
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600); var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData; trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200Note: The colors used to fill the two BitmapData objects have slightly different RGB values (0xFF0000 and 0xFFAA00). The result of thecompare() 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) as BitmapData; trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffffThe result of thecompare() 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, 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)); // -4
Parameters
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. |
TypeError — The otherBitmapData is null. |
import flash.display.Bitmap;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); // 33ffffffvar bm1:Bitmap = new Bitmap(bmd1);addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);addChild(bm2);bm2.x = 60;
copyChannel | () | method |
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Transfers data from one channel of another BitmapData object or the current BitmapData object into a channel of the current BitmapData object. All of the data in the other channels in the destination BitmapData object are preserved.
The source channel value and destination channel value can be one of following values:
BitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEBitmapDataChannel.ALPHAParameters
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 — 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). |
TypeError — The sourceBitmapData, sourceRect or destPoint are null. |
Related API Elements
import flash.display.Bitmap;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);var bm:Bitmap = new Bitmap(bmd);this.addChild(bm);
copyPixels | () | method |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Provides a fast routine to perform pixel manipulation between images with no stretching, rotation, or color effects. This method copies a rectangular area of a source image to a rectangular area of the same size at the destination point of the destination BitmapData object.
If you include thealphaBitmap andalphaPoint 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. ThealphaPoint 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.
ThemergeAlpha property controls whether or not the alpha channel is used when a transparent image is copied onto another transparent image. To copy pixels with the alpha channel data, set themergeAlpha property totrue. By default, themergeAlpha property isfalse.
Parameters
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 thesourceRect parameter. | |
mergeAlpha:Boolean (default =false) — To use the alpha channel, set the value totrue. To copy pixels with no alpha channel, set the value tofalse. |
TypeError — The sourceBitmapData, sourceRect, destPoint are null. |
import flash.display.Bitmap;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);var bm1:Bitmap = new Bitmap(bmd1);this.addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);this.addChild(bm2);bm2.x = 50;
copyPixelsToByteArray | () | method |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 11.4, AIR 3.4 |
Fills a byte array from a rectangular region of pixel data. Starting at theposition index of the ByteArray, this method writes an unsigned integer (a 32-bit unmultiplied pixel value) for each pixel into the byte array. If necessary, the byte array's size is increased to the necessary number of bytes to hold all the pixel data.
Parameters
rect:Rectangle — A rectangular area in the current BitmapData object | |
data:ByteArray — the destination ByteArray object |
TypeError — if therect argument isnull or thedata argument isnull |
Related API Elements
dispose | () | method |
public function dispose():void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Frees memory that is used to store the BitmapData object.
When thedispose() 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.
BitmapData.dispose() releases the memory occupied by the actual bitmap data, immediately (a bitmap can consume up to 64 MB of memory). After usingBitmapData.dispose(), the BitmapData object is no longer usable and the Flash runtime throws an exception if you call functions on the BitmapData object. However,BitmapData.dispose() does not garbage collect the BitmapData object (approximately 128 bytes); the memory occupied by the actual BitmapData object is released at the time the BitmapData object is collected by the garbage collector.
Related API Elements
dispose() method (an exception is thrown):import flash.display.BitmapData;var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFFmyBitmapData.dispose();try { trace(myBitmapData.getPixel(1, 1));} catch (error:Error) { trace(error); // ArgumentError}draw | () | method |
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Draws thesource display object onto the bitmap image, using the Flash runtime vector renderer. You can specifymatrix,colorTransform,blendMode, and a destinationclipRect 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).
Note:ThedrawWithQuality() method works exactly like thedraw() method, but instead of using theStage.quality property to determine the quality of vector rendering, you specify thequality parameter to thedrawWithQuality() method.
This method directly corresponds to how objects are drawn with the standard vector renderer for objects in the authoring tool interface.
The source display object does not use any of its applied 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 itstransform property object to thetransform property of the Bitmap object that uses the BitmapData object.
This method is supported over RTMP inFlash Player 9.0.115.0 and later and in Adobe AIR. You can control access to streams on Flash Media Server in a server-side script. For more information, see theClient.audioSampleAccess andClient.videoSampleAccess properties inServer-Side ActionScript Language Reference for Adobe Flash Media Server.
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 in a content that is accessible to the caller by having called theSecurity.allowDomain() method, a call to thedraw() throws a SecurityError exception. This restriction does not apply to AIR content in the application security sandbox.
There are also restrictions on using a loaded bitmap image as thesource. A call to thedraw() method is successful if the loaded image comes from the same domain as the caller. Also, a cross-domain policy file on the image's server can grant permission to the domain of the SWF content calling thedraw() method. In this case, you must set thecheckPolicyFile property of a LoaderContext object, and use this object as thecontext parameter when calling theload() method of the Loader object used to load the image. These restrictions do not apply to AIR content in the application security sandbox.
On Windows, thedraw() method cannot capture SWF content embedded in an HTML page in an HTMLLoader object in Adobe AIR.
Thedraw() method cannot capture PDF content in Adobe AIR. Nor can it capture or SWF content embedded in HTML in which thewmode attribute is set to"window" in Adobe AIR.
Parameters
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 with the defaultnew Matrix() constructor, or pass anull value. | |
colorTransform:flash.geom: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. If you must pass this parameter but you do not want to transform the image, set this parameter to a ColorTransform object created with the defaultnew ColorTransform() constructor. | |
blendMode:String (default =null) — A string value, from the flash.display.BlendMode class, specifying the blend mode to 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 or rotated, due to a scaling or rotation in thematrix parameter. Thesmoothing parameter only applies if thesource parameter is a BitmapData object. Withsmoothing set tofalse, the rotated or scaled BitmapData image can appear pixelated or jagged. For example, the following two images use the same BitmapData object for thesource parameter, but thesmoothing parameter is set totrue on the left andfalse on the right:
Drawing a bitmap with |
ArgumentError — Thesource parameter is not a BitmapData or DisplayObject object. | |
SecurityError — Thesource 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 in a content that is accessible to the caller by having called theSecurity.allowDomain() method. This restriction does not apply to AIR content in the application security sandbox. | |
ArgumentError — The source is null or not a valid IBitmapDrawable object. |
Related API Elements
import flash.display.Bitmap;import flash.display.BitmapData;import flash.text.TextField;var tf:TextField = new TextField();tf.text = "bitmap text";var myBitmapData:BitmapData = new BitmapData(80, 20);myBitmapData.draw(tf);var bmp:Bitmap = new Bitmap(myBitmapData);this.addChild(bmp);
drawWithQuality | () | method |
public function drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 11.3, AIR 3.3 |
Draws thesource display object onto the bitmap image, using the Flash runtime vector renderer. You can specifymatrix,colorTransform,blendMode, and a destinationclipRect 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).
Note:ThedrawWithQuality() method works exactly like thedraw() method, but instead of using theStage.quality property to determine the quality of vector rendering, you specify thequality parameter to thedrawWithQuality() method.
This method directly corresponds to how objects are drawn with the standard vector renderer for objects in the authoring tool interface.
The source display object does not use any of its applied 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 itstransform property object to thetransform property of the Bitmap object that uses the BitmapData object.
This method is supported over RTMP inFlash Player 9.0.115.0 and later and in Adobe AIR. You can control access to streams on Flash Media Server in a server-side script. For more information, see theClient.audioSampleAccess andClient.videoSampleAccess properties inServer-Side ActionScript Language Reference for Adobe Flash Media Server.
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 in a content that is accessible to the caller by having called theSecurity.allowDomain() method, a call to thedrawWithQuality() throws a SecurityError exception. This restriction does not apply to AIR content in the application security sandbox.
There are also restrictions on using a loaded bitmap image as thesource. A call to thedrawWithQuality() method is successful if the loaded image comes from the same domain as the caller. Also, a cross-domain policy file on the image's server can grant permission to the domain of the SWF content calling thedrawWithQuality() method. In this case, you must set thecheckPolicyFile property of a LoaderContext object, and use this object as thecontext parameter when calling theload() method of the Loader object used to load the image. These restrictions do not apply to AIR content in the application security sandbox.
On Windows, thedrawWithQuality() method cannot capture SWF content embedded in an HTML page in an HTMLLoader object in Adobe AIR.
ThedrawWithQuality() method cannot capture PDF content in Adobe AIR. Nor can it capture or SWF content embedded in HTML in which thewmode attribute is set to"window" in Adobe AIR.
Parameters
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 with the defaultnew Matrix() constructor, or pass anull value. | |
colorTransform:flash.geom: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. If you must pass this parameter but you do not want to transform the image, set this parameter to a ColorTransform object created with the defaultnew ColorTransform() constructor. | |
blendMode:String (default =null) — A string value, from the flash.display.BlendMode class, specifying the blend mode to 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 or rotated, due to a scaling or rotation in thematrix parameter. Thesmoothing parameter only applies if thesource parameter is a BitmapData object. Withsmoothing set tofalse, the rotated or scaled BitmapData image can appear pixelated or jagged. For example, the following two images use the same BitmapData object for thesource parameter, but thesmoothing parameter is set totrue on the left andfalse on the right:
Drawing a bitmap with | |
quality:String (default =null) — Any of one of the StageQuality values. Selects the antialiasing quality to be used when drawing vectors graphics. |
ArgumentError — Thesource parameter is not a BitmapData or DisplayObject object. | |
SecurityError — Thesource 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 in a content that is accessible to the caller by having called theSecurity.allowDomain() method. This restriction does not apply to AIR content in the application security sandbox. | |
ArgumentError — The source is null or not a valid IBitmapDrawable object. |
Related API Elements
import flash.display.Bitmap;import flash.display.BitmapData;import flash.text.TextField;var tf:TextField = new TextField();tf.text = "bitmap text";var myBitmapData:BitmapData = new BitmapData(80, 20);myBitmapData.drawWithQuality(tf, , , , , , StageQuality.LOW);var bmp:Bitmap = new Bitmap(myBitmapData);this.addChild(bmp);
encode | () | method |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 11.3, AIR 3.3 |
Compresses this BitmapData object using the selected compressor algorithm and returns a new ByteArray object. Optionally, writes the resulting data to the specified ByteArray. Thecompressor argument specifies the encoding algorithm, and can be PNGEncoderOptions, JPEGEncoderOptions, or JPEGXREncoderOptions.
The following example compresses a BitmapData object using the JPEGEncoderOptions:
// Compress a BitmapData object as a JPEG file. var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00); var byteArray:ByteArray = new ByteArray(); bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);
Parameters
rect:Rectangle — The area of the BitmapData object to compress. | |
compressor:Object — The compressor type to use. Valid values are:flash.display.PNGEncoderOptions,flash.display.JPEGEncoderOptions, andflash.display.JPEGXREncoderOptions. | |
byteArray:ByteArray (default =null) — The output ByteArray to hold the encoded image. |
ByteArray — A ByteArray containing the encoded image. |
Related API Elements
fillRect | () | method |
public function fillRect(rect:Rectangle, color:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Fills a rectangular area of pixels with a specified ARGB color.
Parameters
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. |
TypeError — The rect is null. |
Related API Elements
import flash.display.Bitmap;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);var bm:Bitmap = new Bitmap(myBitmapData);addChild(bm);
floodFill | () | method |
public function floodFill(x:int, y:int, color:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Performs a flood fill operation on an image starting at an (x,y) coordinate and filling with a certain color. ThefloodFill() 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 — Thex coordinate of the image. | |
y:int — They 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 — with redimport flash.display.Bitmap;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);var bm:Bitmap = new Bitmap(myBitmapData);addChild(bm);
generateFilterRect | () | method |
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Determines the destination rectangle that theapplyFilter() 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, whereblurX = blurY = 4 generates a destination rectangle of(-2,-2,104,204). ThegenerateFilterRect() 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 innerDropShadow 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 sourcerect parameter.
Parameters
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, thesourceRect parameter, and a filter. |
TypeError — The sourceRect or filter are null. |
generateFilterRect() method to determine the rectangular area that the result of a blur filter will occupy. The results of thegenerateFilterRect() method are output by thetrace() function:import flash.display.Bitmap;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));// (x=8, y=8, w=44, h=14)bmd.applyFilter(bmd, rect, pt, filter);var bm:Bitmap = new Bitmap(bmd);addChild(bm);
generateFilterRect() method does not apply the filter. Call theapplyFilter() method to apply the filter.getColorBoundsRect | () | method |
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Determines a rectangular region that either fully encloses all pixels of a specified color within the bitmap image (if thefindColor parameter is set totrue) or fully encloses all pixels that do not include the specified color (if thefindColor parameter is set tofalse).
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 thefindColor parameter is set totrue, the entire image is searched for the bounds of pixels for which(value & mask) == color (wherevalue is the color value of the pixel). If thefindColor parameter is set tofalse, the entire image is searched for the bounds of pixels for which(value & mask) != color (wherevalue 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.
Parameters
mask:uint — A hexadecimal value, specifying the bits of the ARGB color to consider. The color value is combined with this hexadecimal value, by using the& (bitwise AND) operator. | |
color:uint — A hexadecimal value, specifying the ARGB color to match (iffindColor is set totrue) ornot to match (iffindColor is set tofalse). | |
findColor:Boolean (default =true) — If the value is set totrue, returns the bounds of a color value in an image. If the value is set tofalse, 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 thefindColor parameter tofalse:import flash.display.Bitmap;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 maskColor:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);trace(redBounds); // (x=0, y=0, w=80, h=20)var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);trace(notRedBounds); // (x=0, y=20, w=80, h=20)var bm:Bitmap = new Bitmap(bmd);addChild(bm);
getPixel | () | method |
public function getPixel(x:int, y:int):uint| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Returns an integer that represents an RGB pixel value from a BitmapData object at a specific point (x,y). ThegetPixel() 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 perform operations. All BitmapData 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 the raw image pixel is set.
Parameters
x:int — Thex position of the pixel. | |
y:int — They 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. |
Related API Elements
getPixel() method to determine the color value in the upper-left pixel:import flash.display.BitmapData;var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);var pixelValue:uint = bmd.getPixel(0, 0);trace(pixelValue.toString(16)); // ff0000;
getPixel32 | () | method |
public function getPixel32(x:int, y:int):uint| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Returns an ARGB color value that contains alpha channel data and RGB data. This method is similar to thegetPixel() method, which returns an RGB color without alpha channel data.
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 perform operations. All BitmapData 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 the raw image pixel is set.
Parameters
x:int — Thex position of the pixel. | |
y:int — They 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. |
Related API Elements
getPixel32() method to determine the color value in the upper-left pixel, and then 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(0, 0);var alphaValue:uint = pixelValue >> 24 & 0xFF;var red:uint = pixelValue >> 16 & 0xFF;var green:uint = pixelValue >> 8 & 0xFF;var blue:uint = pixelValue & 0xFF;trace(alphaValue.toString(16)); // fftrace(red.toString(16)); // 44trace(green.toString(16)); // aatrace(blue.toString(16)); // cc
getPixels | () | method |
public function getPixels(rect:Rectangle):ByteArray| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Generates a byte array from a rectangular region of pixel data. Writes an unsigned integer (a 32-bit unmultiplied pixel value) for each pixel into the byte array.
Parameters
rect:Rectangle — A rectangular area in the current BitmapData object. |
ByteArray — A ByteArray representing the pixels in the given Rectangle. |
TypeError — The rect is null. |
Related API Elements
getPixels() method to fill a ByteArray object with the pixel values of the BitmapData objectimport 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);
getVector | () | method |
public function getVector(rect:Rectangle):Vector.<uint>| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Generates a vector array from a rectangular region of pixel data. Returns a Vector object of unsigned integers (a 32-bit unmultiplied pixel value) for the specified rectangle.
Parameters
rect:Rectangle — A rectangular area in the current BitmapData object. |
Vector.<uint> — A Vector representing the given Rectangle. |
TypeError — The rect is null. |
histogram | () | method |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Computes a 256-value binary number histogram of a BitmapData object. This method returns a Vector object containing four Vector.<Number> instances (four Vector objects that contain Number objects). The four Vector instances represent the red, green, blue and alpha components in order. Each Vector instance contains 256 values that represent the population count of an individual component value, from 0 to 255.
Parameters
hRect:Rectangle (default =null) — The area of the BitmapData object to use. |
Vector.<Vector.<Number>> |
hitTest | () | method |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Performs pixel-level hit detection between one bitmap image and a point, rectangle, or other bitmap image. A hit is defined as an overlap of a point or rectangle over an opaque pixel, or two overlapping opaque pixels. No stretching, rotation, or other transformation of either object is considered when the hit test is performed.
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.
Parameters
firstPoint:Point — A position of the upper-left corner of the BitmapData image in an arbitrary coordinate space. The same coordinate space is used in defining thesecondBitmapPoint parameter. | |
firstAlphaThreshold:uint — The smallest 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 ofsecondObject is a BitmapData object. | |
secondAlphaThreshold:uint (default =1) — The smallest alpha channel value that is considered opaque in the second BitmapData object. Use this parameter only when the value ofsecondObject is a BitmapData object and both BitmapData objects are transparent. |
Boolean — A value oftrue if a hit occurs; otherwise,false. |
ArgumentError — ThesecondObject parameter is not a Point, Rectangle, Bitmap, or BitmapData object. | |
TypeError — The firstPoint is null. |
hitTest() method with a Point object as thesecondObject. In the first call, the Point object defines the upper-left corner of the BitmapData object, which is not opaque, and in the second call, the Point object 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)); // falsevar pt2:Point = new Point(40, 40);trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
lock | () | method |
public function lock():void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Locks an image so that any objects that reference the BitmapData object, such as Bitmap objects, are not updated when this BitmapData object changes. To improve performance, use this method along with theunlock() method before and after numerous calls to thesetPixel() orsetPixel32() method.
Related API Elements
bitmapData property of a Bitmap object,picture. It then calls thelock() method before calling a complicated custom function,complexTransformation(), that modifies the BitmapData object. (Thepicture object and thecomplexTransformation() function are not defined in this example.) Even if thecomplexTransformation() function updates thebitmapData property of thepicture object, changes are not reflected until the code calls theunlock() method on thebitmapData object:import flash.display.BitmapData;var bitmapData:BitmapData = picture.bitmapData;bitmapData.lock();bitmapData = complexTransformation(bitmapData);bitmapData.unlock();picture.bitmapData = bitmapData;
merge | () | method |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Performs per-channel blending from a source image to a destination image. For each channel and each pixel, a new value is computed based on the channel values of the source and destination pixels. For example, in the red channel, the new value is computed as follows (whereredSrc is the red channel value for a pixel in the source image andredDest is the red channel value at the corresponding pixel of the destination image):
new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;
TheredMultiplier,greenMultiplier,blueMultiplier, andalphaMultiplier values are the multipliers used for each color channel. Use a hexadecimal value ranging from0 to0x100 (256) where0 specifies the full value from the destination is used in the result,0x100 specifies the full value from the source is used, and numbers in between specify a blend is used (such as0x80 for 50%).
Parameters
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 hexadecimal uint value by which to multiply the red channel value. | |
greenMultiplier:uint — A hexadecimal uint value by which to multiply the green channel value. | |
blueMultiplier:uint — A hexadecimal uint value by which to multiply the blue channel value. | |
alphaMultiplier:uint — A hexadecimal uint value by which to multiply the alpha transparency value. |
TypeError — The sourceBitmapData, sourceRect or destPoint are null. |
merge() method, merging the second BitmapData pixels into the first BitmapData object, but only on a specified rectangular area:import flash.display.Bitmap;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);var bm1:Bitmap = new Bitmap(bmd1);addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);addChild(bm2);bm2.x = 110;
noise | () | method |
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Fills an image with pixels representing random noise.
Parameters
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, andBitmapDataChannel.ALPHA). You can use the logical OR operator (|) to combine channel values. | |
grayScale:Boolean (default =false) — A Boolean value. If the value istrue, 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 totrue. |
Related API Elements
noise() method on both. However, thegrayscale parameter is set tofalse for the call to thenoise() method of the first object, and it is set totrue for the call to thenoise() method of the second object:import flash.display.Bitmap;import flash.display.BitmapData;import flash.display.BitmapDataChannel;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);var bm1:Bitmap = new Bitmap(bmd1);this.addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);this.addChild(bm2);bm2.x = 90;
paletteMap | () | method |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Remaps the color channel values in an image that has up to four arrays of color palette data, one for each channel.
Flash runtimes use the following steps to generate the resulting image:
redArray,greenArray,blueArray, andalphaArray. Each of these four arrays should contain 256 values.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.
Parameters
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 object) that corresponds to the upper-left corner of the source rectangle. | |
redArray:Array (default =null) — IfredArray is notnull,red = redArray[source red value] else red = source rect value. | |
greenArray:Array (default =null) — IfgreenArray is notnull,green = greenArray[source green value] else green = source green value. | |
blueArray:Array (default =null) — IfblueArray is notnull,blue = blueArray[source blue value] else blue = source blue value. | |
alphaArray:Array (default =null) — IfalphaArray is notnull,alpha = alphaArray[source alpha value] else alpha = source alpha value. |
TypeError — The sourceBitmapData, sourceRect or destPoint are null. |
paletteMap() method to swap red with green in the bottom rectangular half of the BitmapData object:import flash.display.Bitmap;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);var bm1:Bitmap = new Bitmap(myBitmapData);addChild(bm1);perlinNoise | () | method |
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| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Generates a Perlin noise image.
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.
Parameters
baseX:Number — Frequency to use in thex direction. For example, to generate a noise that is sized for a 64 x 128 image, pass 64 for thebaseX value. | |
baseY:Number — Frequency to use in they direction. For example, to generate a noise that is sized for a 64 x 128 image, pass 128 for thebaseY 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 istrue, 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 istrue, 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, andBitmapDataChannel.ALPHA). You can use the logical OR operator (|) to combine channel values. | |
grayScale:Boolean (default =false) — A Boolean value. If the value istrue, 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 totrue. | |
offsets:Array (default =null) — An array of points that correspond tox andy 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() method to generate a red and blue watercolor effect:import flash.display.Bitmap;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);var bm:Bitmap = new Bitmap(bmd);addChild(bm);
pixelDissolve | () | method |
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Performs a pixel dissolve either from a source image to a destination image or by using the same image. Flash runtimes use arandomSeed 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 process allows dissolving from a blank image into a fully populated image.
If the source and destination images are equal, pixels are filled with thecolor parameter. This process allows dissolving away from a fully populated image. In this mode, the destinationpoint parameter is ignored.
Parameters
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. |
TypeError — The sourceBitmapData, sourceRect or destPoint are null. | |
TypeError — The numPixels value is negative |
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.display.Bitmap;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 bitmap:Bitmap = new Bitmap(bmd);addChild(bitmap);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(); }}scroll | () | method |
public function scroll(x:int, y:int):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Scrolls an image by a certain (x,y) pixel amount. Edge regions outside the scrolling area are left unchanged.
Parameters
x:int — The amount by which to scroll horizontally. | |
y:int — The amount by which to scroll vertically. |
import flash.display.Bitmap;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); var bm:Bitmap = new Bitmap(bmd);addChild(bm);trace (bmd.getPixel32(50, 20).toString(16)); // ffccccccccbmd.scroll(30, 0); trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000
setPixel | () | method |
public function setPixel(x:int, y:int, color:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Sets a single pixel of a BitmapData object. The current alpha channel value of the image pixel is preserved during this operation. The value of the RGB color parameter is treated as an unmultiplied color value.
Note: To increase performance, when you use thesetPixel() orsetPixel32() method repeatedly, call thelock() method before you call thesetPixel() orsetPixel32() method, and then call theunlock() method when you have made all pixel changes. This process prevents objects that reference this BitmapData instance from updating until you finish making the pixel changes.
Parameters
x:int — Thex position of the pixel whose value changes. | |
y:int — They position of the pixel whose value changes. | |
color:uint — The resulting RGB color for the pixel. |
Related API Elements
setPixel() method to draw a red line in a BitmapData object:import flash.display.Bitmap;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);}var bm:Bitmap = new Bitmap(bmd);addChild(bm);setPixel32 | () | method |
public function setPixel32(x:int, y:int, color:uint):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Sets the color and alpha transparency values of a single pixel of a BitmapData object. This method is similar to thesetPixel() method; the main difference is that thesetPixel32() method takes an ARGB color value that contains alpha channel information.
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 perform operations. All BitmapData 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 the raw image pixel is set.
Note: To increase performance, when you use thesetPixel() orsetPixel32() method repeatedly, call thelock() method before you call thesetPixel() orsetPixel32() method, and then call theunlock() method when you have made all pixel changes. This process prevents objects that reference this BitmapData instance from updating until you finish making the pixel changes.
Parameters
x:int — Thex position of the pixel whose value changes. | |
y:int — They 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. |
Related API Elements
setPixel32() method to draw a transparent (alpha == 0x60) red line in a BitmapData object:import flash.display.Bitmap;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);}var bm:Bitmap = new Bitmap(bmd);addChild(bm);setPixels | () | method |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Converts a byte array into a rectangular region of pixel data. For each pixel, theByteArray.readUnsignedInt() method is called and the return value is written into the pixel. If the byte array ends before the full rectangle is written, the function returns. The data in the byte array is expected to be 32-bit ARGB pixel values. No seeking is performed on the byte array before or after the pixels are read.
Parameters
rect:Rectangle — Specifies the rectangular region of the BitmapData object. | |
inputByteArray:ByteArray — A ByteArray object that consists of 32-bit unmultiplied pixel values to be used in the rectangular region. |
EOFError — TheinputByteArray object does not include enough data to fill the area of therect rectangle. The method fills as many pixels as possible before throwing the exception. | |
TypeError — The rect or inputByteArray are null. |
Related API Elements
getPixels() andsetPixels() methods to copy pixels from one BitmapData object to another:import flash.display.Bitmap;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);var bm1:Bitmap = new Bitmap(bmd1);addChild(bm1);var bm2:Bitmap = new Bitmap(bmd2);addChild(bm2);bm2.x = 110;
setVector | () | method |
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Converts a Vector into a rectangular region of pixel data. For each pixel, a Vector element is read and written into the BitmapData pixel. The data in the Vector is expected to be 32-bit ARGB pixel values.
Parameters
rect:Rectangle — Specifies the rectangular region of the BitmapData object. | |
inputVector:Vector.<uint> — A Vector object that consists of 32-bit unmultiplied pixel values to be used in the rectangular region. |
RangeError — The vector array is not large enough to read all the pixel data. |
threshold | () | method |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Tests pixel values in an image against a specified threshold and sets pixels that pass the test to new color values. Using thethreshold() method, you can isolate and replace color ranges in an image and perform other logical operations on image pixels.
Thethreshold() method's test logic is as follows:
((pixelValue & mask) operation (threshold & mask)), then set the pixel tocolor;copySource == true, then set the pixel to corresponding pixel value fromsourceBitmap.Theoperation parameter specifies the comparison operator to use for the threshold test. For example, by using "==" as theoperation 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.
Parameters
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) — If the value istrue, pixel values from the source image are copied to the destination when the threshold test fails. If the value isfalse, the source image is not copied when the threshold test fails. |
uint — The number of pixels that were changed. |
TypeError — The sourceBitmapData, sourceRect destPoint or operation are null. | |
ArgumentError — The operation string is not a valid operation |
perlinNoise() method to add a blue and red pattern to one BitmapData object, and then uses thethreshold() 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.Bitmap;import flash.display.BitmapData;import flash.display.BitmapDataChannel;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 bitmap1:Bitmap = new Bitmap(bmd1);addChild(bitmap1);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 maskColor:uint = 0x00FF0000;bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);var bitmap2:Bitmap = new Bitmap(bmd2);bitmap2.x = bitmap1.x + bitmap1.width + 10;addChild(bitmap2);
unlock | () | method |
public function unlock(changeRect:Rectangle = null):void| Language Version: | ActionScript 3.0 |
| Runtime Versions: | Flash Player 9, AIR 1.0 |
Unlocks an image so that any objects that reference the BitmapData object, such as Bitmap objects, are updated when this BitmapData object changes. To improve performance, use this method along with thelock() method before and after numerous calls to thesetPixel() orsetPixel32() method.
Parameters
changeRect:Rectangle (default =null) — The area of the BitmapData object that has changed. If you do not specify a value for this parameter, the entire area of the BitmapData object is considered changed. This parameter requires Flash Player version 9.0.115.0 or later. |
Related API Elements
bitmapData property of a Bitmap object,picture. It then calls thelock() method before calling a complicated custom function,complexTransformation(), that modifies the BitmapData object. (Thepicture object and thecomplexTransformation() function are not defined in this example.) Even if thecomplexTransformation() function updates thebitmapData property of thepicture object, changes are not reflected until the code calls theunlock() method on thebitmapData object:import flash.display.BitmapData;var bitmapData:BitmapData = picture.bitmapData;bitmapData.lock();bitmapData = complexTransformation(bitmapData);bitmapData.unlock();picture.bitmapData = bitmapData;
threshold() method. The task is accomplished using the following steps:url property is created, which is the location and name of the image filecompleteHandler() method completes the image manipulation.request URLRequest object is then passed toloader.load(), which loads the image into memory by using a display object.completeHandler() method then does the following:duplicate, which in turn calls theduplicateImage() method, which creates a duplicate of the original image.duplicate object's BitmapData object.operation — Applies the new color when the threshold value is greater than or equal to the original.threshold — The value against which each pixel is compared (in this example, light gray with an alpha of 0xCC).color — The color that the pixels are set to that pass the threshold test, which is solid yellow in this case.mask — The exact opposite of color (transparent blue).copySource — Set tofalse, indicating the pixel values are not copied if the threshold value does not pass. This value has no meaning because the image is duplicated and only pixels that pass the threshold test are changed.threshold() method using the preceding variables. The resulting threshold equation is as follows:if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00.Notes:
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; 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); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 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 image; } 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); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } }}