Bitmap, BitmapData, ByteArray…
Lets see how to convert between Bitmap, BitmapData and ByteArray in few examples:
- DisplayObject to BitmapData
- BitmapData to Bitmap
- BitmapData to ByteArray
- URL (image) to ByteArray (asynchronous)
- URL (image) to BitmapData (asynchronous)
- ByteArray to BitmapData (asynchronous)
DisplayObject to BitmapData. FYI DisplayObject is any visible object in flash (Sprite, MovieClip, Bitmap, UIComponent, Video etc…):
import flash.display.BitmapData; var bitmapData:BitmapData = new BitmapData(button.width, button.height, false, 0xFFFFFF); bitmapData.draw(button); // result: bitmapData
BitmapData to Bitmap:
import flash.display.Bitmap; var bitmap:Bitmap = new Bitmap(bitmapData); // result: bitmap
BitmapData to ByteArray. Requires jpeg / png or any other encoder. Read more about JPEG encoding here:
import mx.graphics.codec.JPEGEncoder; import flash.utils.ByteArray; var encoder:JPEGEncoder = new JPEGEncoder(90); var byteArray:ByteArray = encoder.encode(bitmapData)); // result: byteArray
URL (image) to ByteArray. Asynchronous operation:
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.net.URLRequest;
import flash.utils.ByteArray;
var loader:Loader = new Loader();
loader.load(new URLRequest("banner1.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
private function loaderComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
var byteArray:ByteArray = loaderInfo.bytes;
// result: byteArray
}
URL (image) to BitmapData. Asynchronous operation:
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.BitmapData;
var loader:Loader = new Loader();
loader.load(new URLRequest("banner1.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
private function loaderComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height, false, 0xFFFFFF);
bitmapData.draw(loaderInfo.loader);
// result: bitmapData
}
ByteArray to BitmapData. Asynchronous operation:
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.display.BitmapData;
var loader:Loader = new Loader();
loader.loadBytes(byteArray);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);
private function loaderComplete(event:Event):void
{
var loaderInfo:LoaderInfo = LoaderInfo(event.target);
var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height, false, 0xFFFFFF);
bitmapData.draw(loaderInfo.loader);
// result: bitmapData
}

[...] If you are looking for transformation between BitmapData, Bitmap, ByteArray, read this article. [...]