Méthode Canvas getImageData()
Définition et utilisation
getImageData()
La méthode retourne un objet ImageData qui copie les données de pixels de la矩形 spécifiée sur le canevas.
Pour chaque pixel de l'objet ImageData, il existe quatre types d'informations, à savoir les valeurs RGBA :
- R - rouge (0-255)
- G - vert (0-255)
- B - bleu (0-255)
- A - canal alpha (0-255; 0 est transparent, 255 est complètement visible)
La couleur/alpha existe sous forme d'array et est stockée dans l'objet ImageData sous data propriété.
Astuce :Après avoir manipulé les informations de couleur/alpha dans le tableau, vous pouvez utiliser putImageData() La méthode copie les données d'image sur le canevas.
Exemple :
Le code suivant peut obtenir les informations de couleur/alpha du premier pixel de l'objet ImageData retourné :
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Astuce :Vous pouvez également utiliser la méthode getImageData() pour inverser la couleur de chaque pixel d'une image sur le canevas.
Utilisez cette formule pour parcourir tous les pixels et changer leurs valeurs de couleur :
red=255-old_red; green=255-old_green; blue=255-old_blue;
(Voir l'exemple "Essayer par soi-même" ci-dessous.)
Exemple
Exemple 1
Le code suivant copie les données des pixels du rectangle spécifié sur le canevas en utilisant getImageData() et les place de nouveau sur le canevas en utilisant 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); }
Astuce :Plus d'exemples sont fournis en bas de page.
Syntaxe
var imgData=context.getImageData(x,y,width,height);
Valeur des paramètres
Paramètres | Description |
---|---|
x | Coordonnée x du coin supérieur gauche de début de copie. |
y | Coordonnée y du coin supérieur gauche de début de copie. |
width | Largeur de la zone rectangulaire à copier. |
height | Hauteur de la zone rectangulaire à copier. |
Plus d'exemples
Exemple 2
Image à utiliser :

Utilisez getImageData() pour inverser la couleur de chaque pixel de l'image sur le canevas.
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); // Inverser les couleurs 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);
Support du navigateur
Les nombres dans le tableau indiquent la version du navigateur qui prend en charge cette propriété pour la première fois.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Remarque :Internet Explorer 8 et versions antérieures ne prennent pas en charge l'élément <canvas>.