Canvas – flip demi-image

J'ai des données d'image en toile, et maintenant je dois prendre la moitié gauche de l'image, la basculer et l'appliquer à droite, comme un effet miroir.

Exemple :

Entrez la description de l'image ici

Pour ça:

Entrez la description de l'image ici

Je suis arrivé à ce point (j'ai les données d'image prêtes):

ctx.drawImage(this, 0, 0, 960, 540); var imgData = ctx.getImageData(0,0,960,540); // loop through the data and apply mirror ?? 

La largeur et la hauteur sont connues. Des idées?

  1. Bouclez les données d'image
  2. Si le pixel actuel se trouve dans la moitié gauche de l'image, copiez-le dans une position à droite:
 for(var y = 0; y < height; y++) { for(var x = 0; x < width / 2; x++) { // divide by 2 to only loop through the left half of the image. var offset = ((width* y) + x) * 4; // Pixel origin // Get pixel var r = data[offset]; var g = data[offset + 1]; var b = data[offset + 2]; var a = data[offset + 3]; // Calculate how far to the right the mirrored pixel is var mirrorOffset = (width - (x * 2)) * 4; // Get set mirrored pixel's colours data[offset + mirrorOffset] = r; data[offset + 1 + mirrorOffset] = g; data[offset + 2 + mirrorOffset] = b; data[offset + 3 + mirrorOffset] = a; } } 

Je n'ai pas testé cela, mais il devrait fonctionner (plus ou moins), ou du moins vous donner une idée de la façon de le faire.