Método Canvas getImageData()
Definição e uso
getImageData()
O método retorna um objeto ImageData, que copia os dados de pixels de um retângulo específico da tela.
Para cada pixel do objeto ImageData, existem quatro tipos de informações, ou seja, os valores RGBA:
- R - vermelho (0-255)
- G - verde (0-255)
- B - azul (0-255)
- A - canal alpha (0-255; 0 é transparente, 255 é completamente visível)
As informações de cor/alpha existem em forma de array e são armazenadas no objeto ImageData data propriedade.
Dica:Após operar as informações de cor/alpha no array, você pode usar putImageData() O método copia os dados da imagem de volta para a tela.
Exemplo:
O seguinte código pode obter as informações de cor/alpha do primeiro pixel do 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 cada pixel de uma imagem na tela.
Use essa fórmula para percorrer todos os pixels e alterar seus valores de cor:
red=255-old_red; green=255-old_green; blue=255-old_blue;
(Veja o exemplo 'Experimente por conta própria' abaixo.)
Exemplo
Exemplo 1
O código abaixo usa getImageData() para copiar os dados dos pixels de um retângulo específico na tela e, em seguida, usa putImageData() para reposicionar os dados da imagem na tela:
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); }
Dica:Mais exemplos no rodapé da página.
Sintaxe
var imgData = context.getImageData(x,y,width,height);
Valor do parâmetro
Parâmetro | Descrição |
---|---|
x | Coordenada x do canto superior esquerdo do início da cópia. |
y | Coordenada y do canto superior esquerdo do início da cópia. |
width | Largura da área retangular a ser copiada. |
height | Altura da área retangular a ser copiada. |
Mais exemplos
Exemplo 2
Imagem a ser usada:

Use getImageData() para inverter a cor de cada pixel da imagem na tela.
JavaScript:
var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var img = document.getElementById("tulip"); ctx.drawImage(img, 0, 0); var imgData=ctx.getImageData(0, 0, c.width, c.height); // Inverter cores for (var 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);
Suporte do navegador
Os números na tabela indicam a versão do navegador que suporta completamente essa propriedade.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Observação:O Internet Explorer 8 e versões anteriores não suportam o elemento <canvas>.