我希望能够通过在ByteArrays之间来回转换来将图像移入和移出Flex。我在这方面遇到了一些麻烦,所以我设计了一个简单的测试程序,甚至是我无法工作。下面是我想对现在的代码:Flex中的ByteArray图像
protected function button3_clickHandler(event:MouseEvent):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler2);
loader.load(new URLRequest("file:///c:/win.jpg"));
}
private function loaderCompleteHandler2(event:Event):void
{
var loader:Loader = (event.target as LoaderInfo).loader;
var bmp:Bitmap = Bitmap(loader.content);
image1.source = bmp;
myBmpData = bmp.bitmapData;
myByteArray = bmp.bitmapData.getPixels(myBmpData.rect);
}
protected function button4_clickHandler(event:MouseEvent):void
{
var loader:Loader = new Loader();
loader.loadBytes(myByteArray);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
}
private function loaderCompleteHandler(event:Event):void
{
var loader:Loader = (event.target as LoaderInfo).loader;
var bmp:Bitmap = Bitmap(loader.content);
image1.source = bmp;
}
到目前为止,过程如下顶部到底部:点击按钮,如图3所示,图像显示,一切都很顺利。单击按钮4,然后收到“错误#2044:未处理的IOErrorEvent :. text =错误#2124:加载的文件是未知类型。”之后的行“loader.loadBytes(myByeArray);”在函数button4_clickHandler中。据我所知,我正在按照预期使用一切东西。我真的很感激任何建议,让我朝着正确的方向前进。谢谢!
顺便说一句,我使用JP Auclair的Base64类: http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/ – infomaniac 2010-07-07 08:20:45
该解决方案运行良好,但我遇到另一个问题:1.使用byteArray(压缩或更改byteArray)从现有图像2.deal中获取byteArray并返回,然后我想要显示一个新的Image,它使用新的byteArray,b64Img.source = Base64.encode(newBuyeArray) ,问题是图像无法显示 – jason 2012-04-18 03:26:51