2012-05-24 3 views
1

Я закодировал изображение в ByteArray. Как преобразовать его в растровое изображение из этого ByteArray? Спасибо. UliAS3 - ByteArray для bitmap

ответ

1

Каков формат вашего ByteArray? Если пиксели находятся в 32-битном формате ARGB, вы можете создать новый объект BitmapData и установить пиксели с помощью BitmapData.setPixels(). Затем просто назначьте растровые данные растровому объекту.

Если они не находятся в 32-разрядном формате ARGB, вам, вероятно, потребуется сначала их преобразовать.

+0

Интересно. Как узнать, какой формат имеет мой ByteArray? (ByteArray - это изображение и содержит также информацию метаданных) – Uli

+0

Также отредактируйте свой вопрос, чтобы включить то, что ваша цель более высокого уровня, похоже, что вы делаете что-то более сложное, чем вам нужно, чтобы загрузить эти изображения. – shaunhusain

+0

Формат файла изображения - JPEG. Моя цель более высокого уровня - взять ByteArray и сохранить его в разных размерах на жесткий диск в формате JPEG. – Uli

0

Использование загрузчика

import flash.display.Loader; 
import flash.display.LoaderInfo; 
import flash.events.Event; 
import flash.display.BitmapData; 
  
private function startLoad():void 
{ 
    var loader:Loader = new Loader(); 
    loader.loadBytes(byteArray); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); 
}   

private function loaderComplete(event:Event):void 
{ 
    var loaderInfo:LoaderInfo = LoaderInfo(event.target); 
    var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height, false, 0xFFFFFF); 
    bitmapData.draw(loaderInfo.loader); 
    // result: bitmapData 
} 
+0

Я пробовал свой код и все сохраненные с ним изображения недопустимы. Я добавил этот код ниже _draw_, чтобы сохранить изображение на диске: 'this.fileReference = new FileReference(); this.fileReference.save (bitmapData, "test.jpg"); Любые идеи, почему изображения недействительны? ' – Uli

2

Я сделал это испытание, ниже которого работает хорошо. Он преобразует Bytearray в Bitmap. Формат изображения не имеет значения. png, jpg, gif все сохраняют свой формат в метаданных, которые класс bitmapdata будет интерпретировать для вас. При сохранении следует использовать JPEGEncoder или PNGEncoder.

 import mx.events.FlexEvent; 

     public var _file:File; 
     public var _stream:FileStream; 
     public var _load:Loader; 

     protected function init(event:FlexEvent):void { 
      _file = File.desktopDirectory; 
      _file.addEventListener(Event.SELECT, selectComplete); 
      _file.browseForOpen('Image'); 
     } 
     private function selectComplete(event:Event):void { 
      _stream = new FileStream(); 
      _stream.addEventListener(Event.COMPLETE, loadComplete); 
      _stream.openAsync(_file, FileMode.READ); 
     } 
     private function loadComplete(event:Event):void { 
      var ba:ByteArray = new ByteArray(); 
      _stream.readBytes(ba); 
      _load = new Loader(); 
      _load.contentLoaderInfo.addEventListener(Event.COMPLETE, loadbytesComplete); 
      _load.loadBytes(ba); 
     } 
     private function loadbytesComplete(event:Event):void { 
      var bit:Bitmap = _load.content as Bitmap; 
      img.source = bit; 
     } 
0
[Bindable] 
private static var m_barrLogo:ByteArray; 
. 
. 
. 
private function init_m_barrLogo():void 
{ 
    m_barrLogo = someValue; 

    // The Image below will automatically read the new value of the ByteArray and 
    // display the appropriate image. 
} 
. 
. 
. 
<mx:Image source="{m_barrLogo}" y="10" x="10" scaleContent="true" height="140" 
     width="145"/> 
Смежные вопросы