Die Methode putImageData kann ein
ImageData-Objekt,
in den Kontext eingefügt werden. Die Position wird durch die übergebenen Parametern x und y bestimmt.
Die Methode wird erst ab ab JavaScript 1.7 (z.B. Firefox 2) unterstützt.
void putImageData(ImageData, x, y)
Die Methode erwartet drei Parameter.
Die folgende Abbildung zeigt, wo die übergebenen Grössen angetragen werden.

var objImg = new Image();
// IE
if(document.all && !window.opera)
window.onload = function(){ drawIt();};
// Sonstige
else
objImg.onload = function(){ drawIt();}
objImg.src = "bild.jpg";
function drawIt(){
var objCanvas = document.getElementById("canvas_id");
// Falls das Objekt unterstützt wird
if(objCanvas.getContext){
// Kontext
var objContext = objCanvas.getContext('2d');
// Bild in Kontext rendern
objContext.drawImage(objImg, 0, 0);
// Falls die benötigte Methode nicht verfügbar ist
if(typeof objContext.putImageData != "function") return;
// Horizontale Hälfte des Kontextes in ImageData
var objImgData = objContext.getImageData(parseInt(objImg.width/2), 0, parseInt(objImg.width/2), objImg.height);
// Farbwert-Variable
var intCol = 0;
// data-Array durchlaufen
for(var i=0; i<objImgData.data.length; i++){
// Falls die alpha-Komponente erreicht wurde
if(i%4 == 3){
// Farbmittelwert eines Pixels ermitteln
intCol = parseInt(intCol/3);
// Farbkomponenten eines Pixel Mittelwert setzen
objImgData.data[i-3] = objImgData.data[i-2] = objImgData.data[i-1] = intCol;
// Farbwert-Variable zurücksetzen
intCol = 0;
}else{
// Farbwerte addieren
intCol += objImgData.data[i];
}
}
// ImageData als s/w-Variante wieder in Kontext setzen
objContext.putImageData(objImgData, parseInt(objImg.width/2), 0);
}else{
// Sonstiger Code
}
}
Im Beispiel wird zuerst ein Bild in den Kontext gerendert. Anschliessend wird mit getImageData ein
ImageData-Objekt
aus dem Bild entnommen. Dieses Objekt wird pixelweise durchlaufen. Von jedem Pixel wird der Mittelwert der
drei Farbwerte ermittelt und jeder Farbkomponente zugewiesen. Zum Schluss wird eine Schwarz-Weiss-Variante
des ImageData-Objekts in den Kontext zurückgezeichnet.
Sehen sie keinen Schwarz-Weiss-Teil im Bild, unterstützt ihr Browser die Methoden getImageData
und putImageData nicht.