Actionscript 3 动作脚本3:将bytearray转换为PNG并显示在场景中
我通过一个WCF get调用得到一个存储在SQL中的PNG图像。图像被编码为base64字符串,并传递到我的AS3代码。我需要从数据中提取图像并在场景中显示。 除此之外,我也尝试过这个Actionscript 3 动作脚本3:将bytearray转换为PNG并显示在场景中,actionscript-3,png,bytearray,Actionscript 3,Png,Bytearray,我通过一个WCF get调用得到一个存储在SQL中的PNG图像。图像被编码为base64字符串,并传递到我的AS3代码。我需要从数据中提取图像并在场景中显示。 除此之外,我也尝试过这个 var imgArray:ByteArray = Base64.decodeToByteArray(responseXML.ImageObject); var myRect:Rectangle = new Rectangle(100,100,200,200); var bmd:BitmapData = n
var imgArray:ByteArray = Base64.decodeToByteArray(responseXML.ImageObject);
var myRect:Rectangle = new Rectangle(100,100,200,200);
var bmd:BitmapData = new BitmapData(200,200,true,0xAAAAAAAA);
bmd.setPixels(myRect, imgArray);
var image:Bitmap = new Bitmap(bmd,"auto",true);
this.addChild(image);
但是没有用。
救命啊 试试看
试一试
为什么不使用加载器和loadbytes呢?它是土生土长的
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoad)
loader.loadbytes(byteArray);
private function handleLoad(e:Event):void {
var loader:Loader = e.currentTarget as Loader;
// removelistener,etc
trace(loader.content as Bitmap);
}
代码的问题是PNG是压缩的,位图是未压缩的。为什么不使用加载器和loadbytes?它是土生土长的
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoad)
loader.loadbytes(byteArray);
private function handleLoad(e:Event):void {
var loader:Loader = e.currentTarget as Loader;
// removelistener,etc
trace(loader.content as Bitmap);
}
你的代码的问题是PNG被压缩,位图被解压。我使用了DanielH的输入,得到了要加载到我的舞台上的图像。下面是我在事件处理函数中所做的
function ImageLoaded(e:Event):void
{
var bmd:BitmapData = new BitmapData(imageLoader.ImageLoader.width,imageLoader.ImageLoader.height,true, 0xFFFFFF);
bmd.draw(imageLoader.ImageLoader);
var image:Bitmap = new Bitmap(bmd,"auto",true);
image.width=40;
image.height=40;
if(!CheckAndStoreImageIDKey(imageLoader.ImageID))
{
Images[imageLoader.ImageID] = image;
}
}
我使用了DanielH的输入并将图像加载到我的舞台上。下面是我在事件处理函数中所做的
function ImageLoaded(e:Event):void
{
var bmd:BitmapData = new BitmapData(imageLoader.ImageLoader.width,imageLoader.ImageLoader.height,true, 0xFFFFFF);
bmd.draw(imageLoader.ImageLoader);
var image:Bitmap = new Bitmap(bmd,"auto",true);
image.width=40;
image.height=40;
if(!CheckAndStoreImageIDKey(imageLoader.ImageID))
{
Images[imageLoader.ImageID] = image;
}
}
我知道AS3 Flash默认支持PNG、JPEG和GIF格式。因此,没有必要使用PNG解码器。谢谢你的意见。我还将评估PNGDecoder的使用。我知道AS3 Flash默认支持PNG、JPEG和GIF格式。因此,没有必要使用PNG解码器。谢谢你的意见。我还将评估PNGDecoder的使用。我没有得到一个错误。我只是没有在我的舞台上得到这个形象。我解决了这个问题。下面给出了解决方案。我没有得到错误。我只是没有在我的舞台上得到这个形象。我解决了这个问题。下面给出了解决方案。您应该将此标记为答案。并删除你的答案。@ansiart,我当时没有足够的重复次数来做这件事。。。但现在我知道了。谢谢你的回答。你应该把这个标记为答案。并删除你的答案。@ansiart,我当时没有足够的重复次数来做这件事。。。但现在我知道了。谢谢你的回答。