2011-10-25 13 views
5

Me pregunto si hay alguna forma de determinar el ancho y el alto de una imagen que se decodifica en un ByteArray. Por ejemplo en el siguiente, ¿alguna forma de determinar estos valores para los datos?Obtener tamaño de imagen de ByteArray

var data: ByteArray = new ByteArray();

data = codified_image.decode (byteArrayData);

Respuesta

3

Puede hacerlo de esta manera:

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded) 
loader.loadBytes(byteArrayData); 

-

function onLoaded(e:Event):void 
{ 
    var loader:Loader = Loader(e.target.loader); 
    var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData; 

    width = bitmapData.width; 
    height = bitmapData.height; 

    // cleanup 
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaded); 
} 

La desventaja es que toda la imagen va a ser decodificado, por lo que si no lo necesita realmente la imagen, pero solo el ancho y alto, es posible que realmente desee buscar en el conjunto de bytes y decodificar el formato de archivo. (Más complicado, pero

+0

estoy recibiendo error # 2044: no controlada IOErrorEvent :. texto = error # 2124: archivo cargado es de un tipo desconocido – user1013448

+0

estoy recibiendo un error al pasar la ByteArray en el cargador .. Error # 2044: IOErrorEvent no administrado :. text = Error # 2124: El archivo cargado es un tipo desconocido. – user1013448

+0

probablemente el ByteArray que estás proporcionando no sea bueno. ¿De dónde viene esa matriz de bytes? –

0

se puede leer desde la cabecera. cabeceras son diferentes para cada tipo de archivo sin embargo. vistazo a los decodificadores de imagen personalizados, esta es una de las cosas que hacen.

aquí es una para pNGs:

http://ionsden.com/content/pngdecoder