Actionscript 3 动作脚本3:将bytearray转换为PNG并显示在场景中

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

我通过一个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 = 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,我当时没有足够的重复次数来做这件事。。。但现在我知道了。谢谢你的回答。