如何为面板背景图像分配bytearray值。如果有人有想法或体验,请帮我解决问题。简介EXP:如何将bytearray转换为图像或图像bytearray?
我有面板控制,并希望加载从web服务获取图像作为backgroundimage。所以我使用setstyle(),但它不接受该图像。所以如何将这个图像添加到我的面板背景图像。Plz在这里给我你的想法。
如何为面板背景图像分配bytearray值。如果有人有想法或体验,请帮我解决问题。简介EXP:如何将bytearray转换为图像或图像bytearray?
我有面板控制,并希望加载从web服务获取图像作为backgroundimage。所以我使用setstyle(),但它不接受该图像。所以如何将这个图像添加到我的面板背景图像。Plz在这里给我你的想法。
对于AS3,您可以使用adobe corelib。检查本教程... http://ntt.cc/2009/01/09/as3corelib-tutorialhow-to-use-jpegencoder-and-pngencoder-class-in-flex.html
链接中断 – 2013-07-12 18:20:14
只是将链接更改为类似的教程,但请检查其他答案是否使用Alex Rios发布的外部库。 – ozke 2013-08-15 09:42:32
嗯,好我想,因为它是一个形象,你有它在一个BitmapData,让我们说“myBmp” ...... 然后使用以下方法来提取所有数据的BitmapData:
var bytes:ByteArray = myBmp.getPixels(myBmp.rect);
和以下写:
myBmp.setPixels(myBmp.rect, bytes);
注意,只有原始32比特的像素数据被存储在所述的ByteArray,无压缩,也不是原始图像的尺寸。
压缩,您应该参考corelib的,因为ozke说...
使用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);
我用了一个使用flash.display.Loader()将数组中加载图像。它有一个完整的事件,在图像加载后触发。然后,我将该图像绘制到一个位图上,该位图设置为可放置在面板中的图像的数据。希望你能从这个好运中做出。
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>
我有同样的问题。作为解决方法,我创建了嵌套在主Canvas中的子Canvas,并将子图像添加到子Canvas后面的主Canvas中。子画布上绘制的任何内容都将出现在图像的顶部。
只需使用loadBytes函数将其加载到Loader实例中即可。
var ldr:Loader = new Loader();
ldr.loadBytes(myByteArray);
addChild(ldr);
在Flex 3或更高,你只需要做:
yourImage.source = yourByteArray;
的问候!
更多的信息会对您有所帮助。 – 2009-05-25 13:46:11