actionscript 3 - que - ¿Cómo convertir bytearray a imagen o imagen a bytearray?
que es adobe flash (7)
Yo tuve el mismo problema. Como solución, creé sub Canvas anidado dentro de un lienzo principal y agregué una imagen al lienzo principal detrás del lienzo secundario. Todo lo dibujado en el lienzo secundario aparecerá en la parte superior de la imagen.
Cómo asignar el valor de bytearray a la imagen de fondo del panel. Si alguien tiene idea o experiencia por favor ayúdame a superar el problema. BREVE EXP:
Tengo control de panel y quiero cargar la imagen del servicio web como imagen de fondo. Entonces usé setstyle () pero no está aceptando esa imagen. Entonces, ¿cómo agregar esa imagen en mi imagen de fondo del panel? Piénsenme sus ideas aquí.
Usé flash.display.Loader () para cargar una imagen en una matriz. Tiene un evento Completo que se dispara después de que se cargó la imagen. Luego dibujo la imagen en un mapa de bits que configuré para los datos de una imagen que podría colocarse en un panel. Espero que puedas hacerlo después de esta buena suerte.
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>
En Flex 3 o superior, solo necesita hacer:
yourImage.source = yourByteArray;
¡Saludos!
Usar la clase JPGEncoder (com.adobe.images.JPGEncoder) de adobe y ByteArray es todo lo que necesitas. Convirtiendo la imagen en una matriz de bytes (asumiendo que los CAPS son variables que necesitarías completar):
// -- 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);
uhm, bueno, supongo, ya que es una imagen, la tienes en un BitmapData, digamos "myBmp" ... luego usa lo siguiente para extraer todos los datos de BitmapData:
var bytes:ByteArray = myBmp.getPixels(myBmp.rect);
y lo siguiente para escribir:
myBmp.setPixels(myBmp.rect, bytes);
tenga en cuenta que solo los datos brutos de 32 bits en píxeles se almacenan en ByteArray, sin compresión, ni las dimensiones de la imagen original.
para la compresión, debes consultar el corelib, como dijo ozke ...
Para AS3 puedes usar adobe corelib. Consulte este tutorial ... http://ntt.cc/2009/01/09/as3corelib-tutorialhow-to-use-jpegencoder-and-pngencoder-class-in-flex.html
Simplemente cárguelo en una instancia de Loader utilizando la función loadBytes.
var ldr:Loader = new Loader();
ldr.loadBytes(myByteArray);
addChild(ldr);