HTML-doek getImageData() Metode

❮ HTML-doekverwysing

Voorbeeld

Die kode hieronder kopieer die pixeldata vir 'n gespesifiseerde reghoek op die doek met getImageData(), en plaas dan die beelddata terug op die doek met 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);
}

Blaaierondersteuning

Die nommers in die tabel spesifiseer die eerste blaaierweergawe wat die metode ten volle ondersteun.

Method
getImageData() Yes 9.0 Yes Yes Yes

Definisie en gebruik

Die getImageData() metode gee 'n ImageData-objek terug wat die pixeldata vir die gespesifiseerde reghoek op 'n doek kopieer.

Let wel: Die ImageData-voorwerp is nie 'n prent nie, dit spesifiseer 'n deel (reghoek) op die doek, en bevat inligting van elke pixel binne daardie reghoek.

Vir elke pixel in 'n ImageData-voorwerp is daar vier stukke inligting, die RGBA-waardes:

R - Die kleur rooi (van 0-255)
G - Die kleur groen (van 0-255)
B - Die kleur blou (van 0-255)
A - Die alfakanaal (van 0-255; 0 is deursigtig en 255 is volledig sigbaar)

Die kleur/alfa-inligting word in 'n skikking gehou en word in die data- eienskap van die ImageData-objek gestoor.

Wenk: Nadat jy die kleur/alfa-inligting in die skikking gemanipuleer het, kan jy die beelddata terugkopieer op die doek met die putImageData() metode.

Voorbeeld:

Die kode om kleur-/alfa-inligting van die eerste pixel in die teruggestuurde ImageData-voorwerp te kry:

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

Wenk: Jy kan ook die getImageData() metode gebruik om die kleur van elke pixels van 'n prent op die doek om te keer.

Loop deur al die pixels en verander die kleurwaardes deur hierdie formule te gebruik:

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

Sien hieronder vir 'n "Probeer dit self" voorbeeld!


JavaScript-sintaksis

JavaScript-sintaksis: konteks .getImageData( x,y, breedte, hoogte );

Parameterwaardes

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

Meer voorbeelde

Prent om te gebruik:

Die Skreeu

Voorbeeld

Gebruik getImageData() om die kleur van elke pixels van 'n prent op die doek om te keer:

Jou blaaier ondersteun nie die HTML5-skerm nie.

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);

❮ HTML-doekverwysing