Método HTML lienzo getImageData()

❮ Referencia de lienzo HTML

Ejemplo

El siguiente código copia los datos de píxeles para un rectángulo específico en el lienzo con getImageData(), y luego vuelve a colocar los datos de la imagen en el lienzo con putImageData():

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 50, 50);

function copy() {
  var imgData = ctx.getImageData(10, 10, 50, 50);
  ctx.putImageData(imgData, 10, 70);
}

Compatibilidad con navegador

Los números en la tabla especifican la primera versión del navegador que soporta totalmente este método.

Method
getImageData() Yes 9.0 Yes Yes Yes

Definición y uso

El método getImageData() devuelve un objeto ImageData que copia los datos de píxeles del rectángulo especificado en un lienzo.

Nota: El objeto ImageData no es una imagen, especifica una parte (rectángulo) en el lienzo y contiene información de cada píxel dentro de ese rectángulo.

Por cada píxel en un objeto ImageData hay cuatro piezas de información, los valores RGBA:

R - El color rojo (de 0 a 255)
G - El color verde (de 0 a 255)
B - El color azul (de 0 a 255)
A - El canal alfa (de 0 a 255; 0 es transparente y 255 es completamente visible)

La información de color/alfa se mantiene en una matriz y se almacena en la propiedad de datos del objeto ImageData.

Sugerencia: después de manipular la información de color/alfa en la matriz, puede volver a copiar los datos de la imagen en el lienzo con el método putImageData() .

Ejemplo:

El código para obtener información de color/alfa del primer píxel en el objeto ImageData devuelto:

red=imgData.data[0];
green=imgData.data[1];
blue=imgData.data[2];
alpha=imgData.data[3];

Sugerencia: también puede usar el método getImageData() para invertir el color de cada píxel de una imagen en el lienzo.

Recorra todos los píxeles y cambie los valores de color usando esta fórmula:

red=255-old_red;
green=255-old_green;
blue=255-old_blue;

¡Vea a continuación un ejemplo de "Pruébelo usted mismo"!


Sintaxis JavaScript

Sintaxis de JavaScript: contexto .getImageData( x,y,ancho,alto );

Valores paramétricos

Parameter Description
x The x coordinate (in pixels) of the upper-left corner to start copy from
y The y coordinate (in pixels) of the upper-left corner to start copy from
width The width of the rectangular area you will copy
height The height of the rectangular area you will copy

Más ejemplos

Imagen a utilizar:

El grito

Ejemplo

Usa getImageData() para invertir el color de cada píxel de una imagen en el lienzo:

Su navegador no es compatible con HTML5canvastag.

JavaScript:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = document.getElementById("scream");
ctx.drawImage(img, 0, 0);
var imgData = ctx.getImageData(0, 0, c.width, c.height);

// invert colors
var i;
for (i = 0; i < imgData.data.length; i += 4) {
  imgData.data[i] = 255-imgData.data[i];
  imgData.data[i + 1] = 255-imgData.data[i + 1];
  imgData.data[i + 2] = 255-imgData.data[i + 2];
  imgData.data[i + 3] = 255;
}

ctx.putImageData(imgData, 0, 0);

❮ Referencia de lienzo HTML