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.