Canvas getImageData() Methode
Definition und Verwendung
getImageData()
Die Methode gibt ein ImageData-Objekt zurück, das die Pixeldaten des angegebenen Rechtecks auf der Leinwand kopiert.
Für jedes Pixel im ImageData-Objekt gibt es vier Arten von Informationen, nämlich die RGBA-Werte:
- R - Rot (0-255)
- G - Grün (0-255)
- B - Blau (0-255)
- A - Alpha-Kanal (0-255; 0 ist transparent, 255 vollständig sichtbar)
color/alpha existiert in Form eines Arrays und wird im ImageData-Objekt gespeichert: data Eigenschaft verwenden.
Hinweis:Nachdem Sie die color/alpha-Informationen im Array bearbeitet haben, können Sie putImageData() Die Methode kopiert die Bilddaten zurück auf die Leinwand.
Beispiel:
Nachstehender Code kann die color/alpha-Informationen des ersten Pixels des zurückgegebenen ImageData-Objekts abrufen:
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Hinweis:Sie können auch die Methode getImageData() verwenden, um die Farben jedes Pixels einer bestimmten Bildfläche umzukehren.
Verwenden Sie diese Formel, um alle Pixel zu durchsuchen und deren Farbwerte zu ändern:
red=255-old_red; green=255-old_green; blue=255-old_blue;
Bitte siehe untenstehende "Selbst ausprobieren"-Beispiel.
Beispiel
Beispiel 1
Das folgende Code kopiert die Pixeldaten eines bestimmten Rechtecks auf dem Canvas durch getImageData() und kehrt sie durch putImageData() zurück auf den Canvas:
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); }
Hinweis:Mehr Beispiele am Seitenende.
Syntax
var imgData = context.getImageData(x,y,width,height);
Parameterwert
Parameter | Beschreibung |
---|---|
x | x-Koordinate der linken oberen Ecke des Startkopierorts. |
y | y-Koordinate der linken oberen Ecke des Startkopierorts. |
width | Breite des zu kopierenden Rechtecks. |
height | Höhe des zu kopierenden Rechtecks. |
Mehr Beispiele
Beispiel 2
Zu verwendendes Bild:

Verwenden Sie getImageData(), um die Farben jedes Pixels auf dem Canvas umzukehren.
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); // Farben umkehren 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);
Browser-Unterstützung
Die Zahlen in der Tabelle weisen auf die erste Browser-Version hin, die diese Eigenschaft vollständig unterstützt.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Anmerkung:Internet Explorer 8 und frühere Versionen unterstützen das <canvas>-Element nicht.