Comunidad de diseño web y desarrollo en internet online

Recorrer una imagen jpg o bmp pixel por pixel

Citar            
MensajeEscrito el 29 May 2008 10:51 pm
Saludos amigos.
Este es mi primer mensaje en este foro, espero poder ser útil.
Deseo cargar una imagen con as3 para poder analizarla pixel a pixel y con esto reconocer ciertas características de la misma. Cómo puedo hacerlo?

Muchas gracias

w

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 May 2008 01:35 am
Con BitmapData getPixel. Aquí el ejemplo de la ayuda

The following example creates a BitmapData object filled with a color, then uses the getPixel32() method to determine the color value in the upper-left pixel, and then determines the hexadecimal values for each color component (alpha, red, green, and blue):

Código :

import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(1, 1);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc


Es bastante parecido a AS2

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2008 07:46 pm
Jorge, agradezco tu respuesta.
Lo que aún no sé es cómo cargar la imagen en el BitmapData, por ejemplo "Dibujo.jpg" para poder hacer el análisis a esa imagen en específico.
De nuevo agradecido
w

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jun 2008 08:02 pm
Lo cargas en un MC con loadMovie, creas un BitmapData del mismo tamaño y usas Bitmap.draw para copiarlo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Jun 2008 08:27 pm
Amigo, soy medio novato con el asunto. Podrías enviarme un código que me oriente.
De antemano muchísimas gracias
w

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jun 2008 08:39 pm
En as3, utilizas un loader. La forma más sencilla sería:

Código :

import flash.display.*
var ldr:Loader = new Loader();
var bmp:BitmapData;
ldr.addEventListener(Event.COMPLETE,onLoad);
ldr.load(new URLRequest("tuimagen.jpg");
function onLoad(event:Event){
bmp = new BitmapData (event.target.width,event.target.heigth,false);
bmp.draw (ldr);
//Y aquí con dos fors anidados recorres cada uno de los pixeles como te han explicado.
}

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 01 Jun 2008 09:20 pm
Gracias amigo.
Luego de realizar las operaciones a la imagen, ¿cómo la muestro?
w

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jun 2008 09:23 pm
Tuve que hacerle unos cambios al código que me enviastes. Tuvo problemas con el nombre del método onLoad. El trace("hola") no se está imprimiendo.
Gracias
w

import flash.display.*
var ldr:Loader = new Loader();
var bmp:BitmapData;
var unBitmap:Bitmap;
ldr.addEventListener(Event.COMPLETE,cargar);
ldr.load(new URLRequest("Dibujo.jpg"));

function cargar(event:Event):void
{
trace("hola");
bmp = new BitmapData(event.target.width,event.target.height,false);
bmp.draw(ldr);

unBitmap = new Bitmap(bmp);
addChild(unBitmap);
}

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jun 2008 10:13 pm
ah cierto, nunca me acuerdo, añade el listener así:

Código :

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,cargar);

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 01 Jun 2008 10:20 pm
Ahora si amigo, muchísimas gracias.
Espero que podamos mantenernos en contacto
Hasta pronto
w

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Jun 2008 02:52 am
ahora trato de implementar lo acordado en una clase, pero me está generando un error con el manejo de eventos. Cuelgo el código. Tiene problemas con el even.Complete y no estoy seguro que el addChild vaya a funcionar...

agradezco la ayuda
w

package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.net.URLRequest;

public class cargarImagen {
private var _cargador:Loader;
private var _bd:BitmapData;

function cargarImagen(url:String) {
_cargador=new Loader();
_cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,cargar);
_cargador.load(new URLRequest(url));
}

function cargar(event:Event) {
_bd=new BitmapData(event.target.width,event.target.height,false);
_bd.draw(ldr);
}

public function mostrarImagen()
{
addChild(new Bitmap(_bd));
}
}
}

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Jun 2008 08:47 am
_bd.draw(ldr);


¿Donde está ldr? ¿No será event.target?
Y no te olvides de darle formato a tu código

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Jun 2008 03:26 pm
hice las modificaciones, tambien le di formato, pero al colgarlo en el foro lo pierde. Sigo teniendo error con el evento: 1046: Type was not found or was not a compile-time constant: Event.

Agradecido
w

package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.net.URLRequest;

public class cargarImagen {
private var _cargador:Loader;
private var _bd:BitmapData;

function cargarImagen(url:String) {
_cargador=new Loader();
_cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,cargar);
_cargador.load(new URLRequest(url));
}

function cargar(event:Event) {
_bd=new BitmapData(event.target.width,event.target.height,false);
_bd.draw(event.target);
}

public function mostrarImagen()
{
addChild(new Bitmap(_bd));
}
}
}

Por wolfgang_gil

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Jun 2008 03:33 pm
Te falta importar Event:

import flash.events.Event

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Jun 2008 02:22 am
Compiló sin problemas.
Lo probaré luego con más tiempo.
Estoy muy agradecido por el tiempo compartido
hasta pronto
w

Por wolfgang_gil

8 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.