2012-12-01 3 views
14

J'itérer sur des données d'image tiré d'un canvas comme ceci:Get X et pixel Y coordonnées lorsque vous parcourez toile HTML5 getImageData

var imageData = this.context.getImageData(0, 0, this.el.width, this.el.height); 
var data = imageData.data; 

for (var i = data.length; i >= 0; i -= 4) { 
    if (data[i + 3] > 0) { 
     data[i] = this.colour.R; 
     data[i + 1] = this.colour.G; 
     data[i + 2] = this.colour.B; 
    } 
} 

Comment calculer le pixel courant coordonnées X et Y que je suis à?

Répondre

11

Une suite arithmétique simple:

Diviser la position linéaire de la largeur. C'est votre coordonnée Y. Multipliez cette coordonnée Y par la largeur et soustrayez cette valeur de la position linéaire. Le résultat est la coordonnée X.

Notez également, vous devrez diviser la position linéaire par 4 puisqu'il s'agit de RGBA.

+0

Mec - merci pour cela, j'ai frappais pendant quelques heures la tête contre un mur de briques avec ceci, maintenant trié – jcvandan

+0

Pourriez-vous donner un exemple? Je ne pense pas que je comprends parfaitement cette séquence. Les réponses ci-dessous sont-elles correctes par hasard? J'ai du mal à obtenir les coordonnées X et Y d'un pixel. Toute aide serait très appréciée. – Awin

+0

Je pense que j'ai juste besoin de savoir ce que signifie "position linéaire". Est-ce la position dans le tableau de données? Ou position de pixel qui est l'indice/4 ?? – Awin

7

Cela devrait fonctionner

var x = (Math.floor(i/4) % 4); 
var y = Math.floor(Math.floor(i/this.el.width)/4); 
+1

ne fonctionne pas .. testé – user889030

18

corrigé et testé la version de code:

var x = (i/4) % this.el.width; 
var y = Math.floor((i/4)/this.el.width); 
+0

fonctionne .. testé – user889030

Questions connexes