2012-12-01 9 views
14

sto iterazione di alcuni dati di immagine tirato da un canvas in questo modo:Get X e pixel Y coordinate quando l'iterazione di HTML5 Canvas 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; 
    } 
} 

Come faccio a calcolare il X corrente e coordinate y dei pixel che sono a?

risposta

11

una semplice sequenza aritmetica:

Divide la posizione lineare per la larghezza. Questa è la tua coordinata Y. Moltiplicare la coordinata Y per la larghezza e sottrarre quel valore dalla posizione lineare. Il risultato è la coordinata X.

Inoltre, è necessario dividere la posizione lineare per 4 poiché è RGBA.

+0

Amico - grazie per questo, ho sbattere la testa contro un muro di mattoni per un paio d'ore con questo, ordinato ora – jcvandan

+0

Potresti fornire un esempio? Non penso di comprendere appieno questa sequenza. Le risposte sottostanti sono corrette per caso? Sto lottando per ottenere le coordinate X e Y di un pixel. Qualsiasi aiuto sarebbe molto apprezzato. – Awin

+0

Penso di aver solo bisogno di sapere cosa significa "posizione lineare". È quella la posizione nell'array di dati? O la posizione del pixel che è l'indice/4 ?? – Awin

7

Questo dovrebbe funzionare

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

non funziona .. testato – user889030

18

corretto e testati versione del Codice:

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

funziona .. testato – user889030

Problemi correlati