1


我通过 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);

但无济于事。
帮助!

4

3 回答 3

6

你为什么不使用加载器和加载字节?是原生的。

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 是压缩的,位图是未压缩的。

于 2012-05-23T16:56:31.813 回答
2

我使用 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;
        }
    }
于 2012-06-11T11:08:15.773 回答
1

试试PNGDecoder (http://www.ionsden.com/content/pngdecoder)

import ion.utils.png.PNGDecoder;

var bmd:BitmapData = PNGDecoder.decodeImage(imgArray);
于 2012-05-23T16:22:05.980 回答