Pixelando imágenes en Actionscript 3.0

Etiquetas: Bitmapdata threshold getPixel32 draw

Pixelando imágenes en Actionscript 3.0

Este post es una modificación de este experimento.

En el anterior recortaba una imagen en cuadrados, comprobando si contenían algún pixel transparente o no. En este divido la imagen en cuadrados, calculo el color que aparece mas veces en ese cuadrado, y creo un Shape relleno de ese color que coloco en las coordenadas del cuadrado.

Las función que calcula el color dominante es esta:

  1.  
  2. public static function obtenerColorPrincipal( source:BitmapData):Array
  3. {
  4. var n:Object = {};
  5. var a:Array = [];
  6. var p:int;
  7. var alphaValue:uint
  8.  
  9. for (var x:int = 0; x < source.width; x += 10)
  10. {
  11. for (var y:int = 0; y < source.height; y+= 10)
  12. {
  13. p = source.getPixel32(x, y);
  14. alphaValue = p >> 24 & 0xFF;
  15. if (alphaValue > 0x00) {
  16. n[p] ? n[p]++ : n[p] = 1;
  17. }
  18. }
  19. }
  20.  
  21. for (var c:String in n)
  22. {
  23. a.push ( { colour:c, count:n[c] } );
  24. }
  25.  
  26. return a.sortOn( ["count"], Array.DESCENDING );
  27. }
  28.  

BitmapData: Recortar imágenes seleccionando trozos no transparentes

Etiquetas: threshold

BitmapData: Recortar imágenes seleccionando trozos no transparentes

No sé si le servirá a alguien, pero hoy entrenando se me ha ocurrido hacer esto y creo que puedo tener alguna aplicación interesante.

Se trata de recortar una imagen en cuadrados, haciendo que los recortes afecten solo a los pixels no transparentes de la imagen, utilizando threshold y Bitmapdata.

Primero dividimos la imagen en cuadrados, y comprobamos si los cuadrados contienen algún pixel no vacío (es decir, que no sea transparente). Si el cuadrado no está vacio, creamos un botón con el trozo de imagen que le corresponde, y si no no.

Por último, en los botones que hemos creado, mostramos solo el handCursor cuando el pixel sobre el que está el ratón no es transparente.

Comparar pixels de imágenes en Actionscript 3.0 con threshold

Etiquetas: BitmapData clone threshold

Comparar pixels de imágenes en Actionscript 3.0 con threshold

La función threshold permite hacer comparaciones pixel a pixel en una imagen. Por ejemplo, podemos separar todos los pixels mayores de un color de una imagen, y obtener otra imagen con esos pixels. La función threshold tiene 5 parámetros obligatorios (y varios opcionales):

threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint)

-sourceBitmapData: la imagen que vamos a utilizar

-sourceRect: rectángulo que define el area de la imagen de origen que vamos a utilizar

-destPoint: punto de la imagen de destino que corresponde a la esquina superior izquierda del rectángulo

-operation: operación que vamos a utilizar

-threshold: valor con el que comparamos cada pixel

Por ejemplo, si queremos separar los pixels mayores de 0xFFCCCCCC de los menores en una imagen, podemos utilizar:

  1.  
  2. img1.threshold(img1, new Rectangle(0, 0, 350, 242), new Point(0, 0), ">", 0xFFCCCCCC);
  3. img2.threshold(img2, new Rectangle(0, 0, 350, 242), new Point(0, 0), "<=", 0xFFCCCCCC);

El código completo y los fuentes: