如何将bytearray值分配给面板背景图像。如果有人有想法或经验,请帮助我解决这个问题。简要说明:
我有一个面板控件,想要从Web服务获取图像作为背景图像加载。因此,我使用了setstyle(),但它不接受该图像。那么如何将该图像添加到我的面板背景图像中。请在此处告诉我您的想法。
如何将bytearray值分配给面板背景图像。如果有人有想法或经验,请帮助我解决这个问题。简要说明:
我有一个面板控件,想要从Web服务获取图像作为背景图像加载。因此,我使用了setstyle(),但它不接受该图像。那么如何将该图像添加到我的面板背景图像中。请在此处告诉我您的想法。
yourImage.source = yourByteArray;
敬礼!
img.load(myByteArray)
这样写来使用 byteArray
作为图像源呢?这有意义吗? - Felipe嗯,我猜,既然它是一张图片,你应该已经将其存储在BitmapData中,假设为“myBmp”... 那么使用以下代码从BitmapData中提取所有数据:
var bytes:ByteArray = myBmp.getPixels(myBmp.rect);
以下是需要编写的内容:
myBmp.setPixels(myBmp.rect, bytes);
对于AS3,您可以使用Adobe Corelib。请查看此教程... http://ntt.cc/2009/01/09/as3corelib-tutorialhow-to-use-jpegencoder-and-pngencoder-class-in-flex.html
使用Adobe的JPGEncoder(com.adobe.images.JPGEncoder)类和ByteArray就足够了。将图像转换为字节数组(假设CAPS是需要填写的变量):
// -- first draw (copy) the image's bitmap data
var image:DisplayObject = YOUR_IMAGE;
var src:BitmapData = new BitmapData(image.width, image.height);
src.draw(image);
// -- encode the jpg
var quality:int = 75;
var jpg:JPGEncoder = new JPGEncoder(quality);
var byteArray:ByteArray = jpg.encode(src);
public static function updateImage(img:Image, matrix:Matrix,
pageDTO:PageDTO, bitmapData:BitmapData):void {
var loader:flash.display.Loader = new flash.display.Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (e:Event) : void {
bitmapData.draw(loader.content, matrix);
pageViewer.data = new Bitmap(bitmapData);
});
loader.loadBytes(pageDTO.thumbnail);
}
<mx:Panel>
<mx:Image id="pageViewer"/>
</mx:Panel>
var ldr:Loader = new Loader();
ldr.loadBytes(myByteArray);
addChild(ldr);
我曾经遇到过同样的问题。为了解决这个问题,我创建了一个子画布嵌套在主画布中,并在主画布后面添加了一个图像。在子画布上绘制的任何内容都会出现在图像的顶部。