Metodo Canvas getImageData()
Definizione e uso
getImageData()
Il metodo restituisce un oggetto ImageData, che copia i dati dei pixel di un rettangolo specificato sul canvas.
Per ogni pixel dell'oggetto ImageData, ci sono quattro tipi di informazioni, ovvero i valori RGBA:
- R - rosso (0-255)
- G - verde (0-255)
- B - blu (0-255)
- A - canale alpha (0-255; 0 è trasparente, 255 è completamente visibile)
color/alpha esiste in forma array e viene memorizzato nell'oggetto ImageData data proprietà.
Suggerimento:Dopo aver completato l'operazione delle informazioni color/alpha nell'array, puoi utilizzare putImageData() Il metodo copia i dati dell'immagine indietro sul canvas.
Esempio:
Il seguente codice ottiene le informazioni di colore/alpha del primo pixel dell'oggetto ImageData restituito:
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Suggerimento:Puoi anche utilizzare il metodo getImageData() per invertire i colori di ciascun pixel di un'immagine sul canvas.
Utilizzare questa formula per iterare attraverso tutti i pixel e modificare i loro valori di colore:
red=255-old_red; green=255-old_green; blue=255-old_blue;
(Vedere l'esempio di "Prova personalmente" sottostante.)
Esempio
Esempio 1
Il seguente codice copia i dati dei pixel di un rettangolo specifico sul canvas utilizzando getImageData(), poi ripristina i dati dell'immagine utilizzando 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); }
Suggerimento:Più esempi forniti nella parte inferiore della pagina.
Sintassi
var imgData = context.getImageData(x,y,Larghezza,Altezza);
Valore del parametro
Parametro | Descrizione |
---|---|
x | Coordinata x dell'angolo superiore sinistro del punto di partenza della copia. |
y | Coordinata y dell'angolo superiore sinistro del punto di partenza della copia. |
Larghezza | Larghezza della regione rettangolare da copiare. |
Altezza | Altezza della regione rettangolare da copiare. |
Più esempi
Esempio 2
Immagine da utilizzare:

Usa getImageData() per invertire i colori di ogni pixel dell'immagine sul canvas.
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); // Invertire i colori 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);
Supporto del browser
I numeri nella tabella indicano la versione del browser che supporta completamente questa proprietà.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Nota:Internet Explorer 8 e versioni precedenti non supportano l'elemento <canvas>.