获得BitmapData对应的字节数组, 所要做的只是调用getPixels()方法。getPixels()方法需要指定捕捉区域;最便捷的方法就是使用即将序列化的BitmapData的rect属性。
// ActionScript 3.0
// 假定“bitmapImage”是需要序列化的位图对象
var bytes:ByteArray = bitmapImage.bitmapData.getPixels(bitmapImage.bitmapData.rect);
可以使用开源库as3corelib里面的JPGEncoder类。例如:
var bpData:BitmapData;
var imgData:ByteArray;
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
imgData = jpgEncoder.encode(bpData);
给你一个完整的例子:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.display.Loader;
import com.adobe.images.JPGEncoder;
import flash.net.URLRequest;
import flash.events.Event;
import flash.utils.ByteArray;
var bpData:BitmapData;
var imgData:ByteArray;
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var loader:Loader = new Loader();
loader.load(new URLRequest("test.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, encodePic);
function encodePic(evt:Event):void
{
bpData = evt.target.content.bitmapData;
imgData = jpgEncoder.encode(bpData);
trace(imgData.length);
//这里loader2载入的是ByteArray对象
var loader2:Loader = new Loader();
loader2.loadBytes(imgData);
addChild(loader2);
}
做了一个简单的例子,看附件里面,源文件用flash cs6打开。