我把图像编码成了ByteArray。如何将其从ByteArray转换为位图?谢谢。Uli
发布于 2012-07-27 01:53:26
我在下面做了这个测试,效果很好。它将字节数组转换为位图。图像的格式无关紧要。png、jpg、gif都将它们的格式保存在bitmapdata类将为您解释的元数据中。保存时应使用JPEGEncoder或PNGEncoder。
import mx.events.FlexEvent;
public var _file:File;
public var _stream:FileStream;
public var _load:Loader;
protected function init(event:FlexEvent):void {
_file = File.desktopDirectory;
_file.addEventListener( Event.SELECT, selectComplete);
_file.browseForOpen( 'Image' );
}
private function selectComplete( event:Event ):void {
_stream = new FileStream();
_stream.addEventListener( Event.COMPLETE, loadComplete );
_stream.openAsync( _file, FileMode.READ );
}
private function loadComplete( event:Event ):void {
var ba:ByteArray = new ByteArray();
_stream.readBytes( ba );
_load = new Loader();
_load.contentLoaderInfo.addEventListener( Event.COMPLETE, loadbytesComplete );
_load.loadBytes( ba );
}
private function loadbytesComplete( event:Event ):void {
var bit:Bitmap = _load.content as Bitmap;
img.source = bit;
}
发布于 2012-05-24 15:44:17
您的ByteArray
的格式是什么?如果像素为32位ARGB格式,则可以使用BitmapData.setPixels()
创建新的BitmapData
对象并设置像素。然后只需将位图数据分配给一个位图对象。
如果它们不是32位ARGB格式,您可能需要首先转换它们。
发布于 2012-05-24 15:51:57
使用加载器
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.display.BitmapData;
private function startLoad():void
{
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
}
https://stackoverflow.com/questions/10740182
复制相似问题