as3如何将bitmapdata转换为bytearray

2026年09月26日 00:28
有2个网友回答
网友(1):

获得BitmapData对应的字节数组, 所要做的只是调用getPixels()方法。getPixels()方法需要指定捕捉区域;最便捷的方法就是使用即将序列化的BitmapData的rect属性。
// ActionScript 3.0
// 假定“bitmapImage”是需要序列化的位图对象
var bytes:ByteArray = bitmapImage.bitmapData.getPixels(bitmapImage.bitmapData.rect);

网友(2):

可以使用开源库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打开。