Método getImageData() da tela HTML

❮ Referência de tela HTML

Exemplo

O código abaixo copia os dados de pixel para um retângulo especificado na tela com getImageData() e, em seguida, coloca os dados da imagem de volta na tela com 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);
}

Suporte ao navegador

Os números na tabela especificam a primeira versão do navegador que oferece suporte total ao método.

Method
getImageData() Yes 9.0 Yes Yes Yes

Definição e uso

O método getImageData() retorna um objeto ImageData que copia os dados de pixel para o retângulo especificado em uma tela.

Nota: O objeto ImageData não é uma imagem, ele especifica uma parte (retângulo) na tela e contém informações de cada pixel dentro desse retângulo.

Para cada pixel em um objeto ImageData existem quatro informações, os valores RGBA:

R - A cor vermelha (de 0-255)
G - A cor verde (de 0-255)
B - A cor azul (de 0-255)
A - O canal alfa (de 0-255; 0 é transparente e 255 é totalmente visível)

As informações de cor/alfa são mantidas em uma matriz e são armazenadas na propriedade data do objeto ImageData.

Dica: Depois de manipular as informações de cor/alfa no array, você pode copiar os dados da imagem de volta para a tela com o método putImageData() .

Exemplo:

O código para obter informações de cor/alfa do primeiro pixel no objeto ImageData retornado:

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

Dica: Você também pode usar o método getImageData() para inverter a cor de todos os pixels de uma imagem na tela.

Percorra todos os pixels e altere os valores de cor usando esta fórmula:

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

Veja abaixo um exemplo "Experimente você mesmo"!


Sintaxe JavaScript

Sintaxe JavaScript: context .getImageData( x,y,largura,altura );

Valores de parâmetro

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

Mais exemplos

Imagem para usar:

O grito

Exemplo

Use getImageData() para inverter a cor de cada pixel de uma imagem na tela:

Seu navegador não suporta a tag 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);

❮ Referência de tela HTML