Toile HTML méthode getImageData()

❮ Référence de canevas HTML

Exemple

Le code ci-dessous copie les données de pixel pour un rectangle spécifié sur le canevas avec getImageData(), puis replace les données d'image sur le canevas avec 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);
}

Prise en charge du navigateur

Les nombres dans le tableau indiquent la première version du navigateur qui prend entièrement en charge la méthode.

Method
getImageData() Yes 9.0 Yes Yes Yes

Définition et utilisation

La méthode getImageData() renvoie un objet ImageData qui copie les données de pixel pour le rectangle spécifié sur un canevas.

Remarque : L'objet ImageData n'est pas une image, il spécifie une partie (rectangle) sur le canevas et contient des informations sur chaque pixel à l'intérieur de ce rectangle.

Pour chaque pixel d'un objet ImageData, il existe quatre éléments d'information, les valeurs RGBA :

R - La couleur rouge (de 0 à 255)
G - La couleur verte (de 0 à 255)
B - La couleur bleue (de 0 à 255)
A - Le canal alpha (de 0 à 255 ; 0 est transparent et 255 est entièrement visible)

Les informations de couleur/alpha sont conservées dans un tableau et sont stockées dans la propriété data de l'objet ImageData.

Conseil : après avoir manipulé les informations de couleur/alpha dans le tableau, vous pouvez recopier les données d'image sur le canevas avec la méthode putImageData() .

Exemple:

Le code pour obtenir les informations de couleur/alpha du premier pixel dans l'objet ImageData renvoyé :

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.

Parcourez tous les pixels et modifiez les valeurs de couleur à l'aide de cette formule :

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

Voir ci-dessous pour un exemple "Essayez-le vous-même" !


Syntaxe JavaScript

Syntaxe JavaScript : contexte .getImageData( x,y,largeur,hauteur );

Valeurs des paramètres

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

Plus d'exemples

Image à utiliser :

Le cri

Exemple

Utilisez getImageData() pour inverser la couleur de chaque pixel d'une image sur le canevas :

Votre navigateur ne prend pas en charge la balise HTML5 canva.

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

❮ Référence de canevas HTML