Mapa de bits
La imagen de mapa de bits es un objeto imageData
- imageData(): se usa para crear el objeto.
- getImageData(): método de imageData para copiar los pixels de una región del canvas
- putImageData(): méodo de imageData para dibujar en el canvas una imagen a partir de sus pixels
Este objeto tiene usan tres propiedades
- width, height: ancho y alto de la imagen
- data: lista con los datos de los pixels de la imagen
Este objeto tambien puede ser ceado a partir de un contexto Canvas 2D con el método createImageData()
Cada pixel viene definido por cuatro valores: Rojo, Verde, Azul, Opacidad. Cada uno va de 0 a 255 para indicar la intensidad así si el primer pixel de una imagen con nombre miImagen va en rojo y opaco sería miImagen.data[0] = 255, miImagen.data[1] = 0, miImagen.data[1] = 0, miImagen.data[3] = 255. Es decir 255 (máximo) de componente rojo, 0 de verde y 0 de azul y máxima opacidad.
Como ves el pixel primero va de data[0] a data[3], el segundo pixel va de data[4] a data[7]. En general el pixel n del objeto miImagen (imageData) va desde miImagen.data[4*n] a miImagen.data[4*n+3), ojo que n comienza en 0, el primer pixel es el 0, el segundo es el 1 y así hasta el último.
Fíjate en este ejemplo en el que se define un rectángulo verde:
Como ves lapiz.getImageData(x, y, w, h) compia un rectángulo con la esquina superior izquierda en x, y, siendo w y h el ancho y el alto del area copiada. El método putImageData(x1, y1) coloca la imagen copiada a partir del punto dado por x1, y1 que es la esquina superior izquierda del recorte copiado.