2009-05-25 100 views
6

如何爲面板背景圖像分配bytearray值。如果有人有想法或體驗,請幫我解決問題。簡介EXP:如何將bytearray轉換爲圖像或圖像bytearray?

我有面板控制,並希望加載從web服務獲取圖像作爲backgroundimage。所以我使用setstyle(),但它不接受該圖像。所以如何將這個圖像添加到我的面板背景圖像。Plz在這裏給我你的想法。

+0

更多的信息會對您有所幫助。 – 2009-05-25 13:46:11

回答

4

嗯,好我想,因爲它是一個形象,你有它在一個BitmapData,讓我們說「myBmp」 ...... 然後使用以下方法來提取所有數據的BitmapData:

var bytes:ByteArray = myBmp.getPixels(myBmp.rect); 

和以下寫:

myBmp.setPixels(myBmp.rect, bytes); 

注意,只有原始32比特的像素數據被存儲在所述的ByteArray,無壓縮,也不是原始圖像的尺寸。

壓縮,您應該參考corelib的,因爲ozke說...

1

使用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); 
1

我用了一個使用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> 
0

我有同樣的問題。作爲解決方法,我創建了嵌套在主Canvas中的子Canvas,並將子圖像添加到子Canvas後面的主Canvas中。子畫布上繪製的任何內容都將出現在圖像的頂部。

0

只需使用loadBytes函數將其加載到Loader實例中即可。

var ldr:Loader = new Loader(); 
ldr.loadBytes(myByteArray); 
addChild(ldr); 
12

在Flex 3或更高,你只需要做:

yourImage.source = yourByteArray; 

的問候!