Ver Mensaje Individual
  #55 (permalink)  
Antiguo 18/12/2013, 13:54
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 11 meses
Puntos: 206
Respuesta: Propuesta para desafíos javascript 2014

Sí, calcular la media es una forma, la más usada para pixelar, y supongo que la que mejor queda en todos los casos.

Pero puedes experimentar con otras ideas. Por ejemplo, usar la moda, permitiendo que varios colores sean el mismo si la distancia entre ellos no supera un umbral determinado. O coger los 4 píxeles de las esquinas del cuadrado, y usarlos para hacer la media sólo con ellos. Imaginad mas locuras y usadlas, en este reto no hay una única forma de pixelar.

El objeto Uint8ClampedArray no es más que un array en el que todos sus elementos se fuerzan a ser enteros sin signo de 8 bits, que es precisamente el formato de cada componente RGBA que acepta el canvas. Como ya sabrás.

Si te fijas, con getImageData puedes extraer un sólo pixel, que te devolverá en un array de 4 posiciones. Y con putImageData, puedes volver a meterlo. Obviamente no es razonable extraer y meter muchos píxeles uno a uno. Pero más allá de eso...


El mío también hace la media:

http://jsfiddle.net/Ld4ht/2/

Pero es muy rápido porque recorro directamente los arrays a partir de su índice, y sin usar ninguna ayuda externa.

Y ahora no sé si poner otro ejercicio, esperar mas respuestas, o esperar mas tiempo. Me lo pensaré.

Última edición por marlanga; 18/12/2013 a las 14:07