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 :
Pour ça:
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?
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.