HTML-Leinwand getImageData() Methode

❮ HTML-Canvas-Referenz

Beispiel

Der folgende Code kopiert die Pixeldaten für ein bestimmtes Rechteck auf der Leinwand mit getImageData() und legt dann die Bilddaten mit putImageData() wieder auf der Leinwand ab:

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

Browser-Unterstützung

Die Zahlen in der Tabelle geben die erste Browserversion an, die das Verfahren vollständig unterstützt.

Method
getImageData() Yes 9.0 Yes Yes Yes

Definition und Verwendung

Die Methode getImageData() gibt ein ImageData-Objekt zurück, das die Pixeldaten für das angegebene Rechteck auf eine Leinwand kopiert.

Hinweis: Das ImageData-Objekt ist kein Bild, es gibt einen Teil (Rechteck) auf der Leinwand an und enthält Informationen zu jedem Pixel innerhalb dieses Rechtecks.

Für jedes Pixel in einem ImageData-Objekt gibt es vier Informationen, die RGBA-Werte:

R - Die Farbe Rot (von 0-255)
G - Die Farbe Grün (von 0-255)
B - Die Farbe Blau (von 0-255)
A - Der Alpha-Kanal (von 0-255; 0 ist transparent und 255 ist vollständig sichtbar)

Die Farb-/Alpha-Informationen werden in einem Array gespeichert und in der data- Eigenschaft des ImageData-Objekts gespeichert.

Tipp: Nachdem Sie die Farb-/Alpha-Informationen im Array manipuliert haben, können Sie die Bilddaten mit der Methode putImageData() wieder auf die Leinwand kopieren .

Beispiel:

Der Code zum Abrufen von Farb-/Alpha-Informationen des ersten Pixels im zurückgegebenen ImageData-Objekt:

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

Tipp: Sie können auch die Methode getImageData() verwenden, um die Farbe aller Pixel eines Bildes auf der Leinwand umzukehren.

Durchlaufen Sie alle Pixel und ändern Sie die Farbwerte mit dieser Formel:

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

Unten finden Sie ein „Probieren Sie es selbst“-Beispiel!


JavaScript-Syntax

JavaScript-Syntax: Kontext .getImageData( x,y,Breite,Höhe );

Parameterwerte

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

Mehr Beispiele

Zu verwendendes Bild:

Der Schrei

Beispiel

Verwenden Sie getImageData(), um die Farbe aller Pixel eines Bildes auf der Leinwand zu invertieren:

Ihr Browser unterstützt den HTML5-Canvastag nicht.

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-Canvas-Referenz