2012-12-01 4 views
14

Ich bin Iterieren gezogen einige Bilddaten über von einem canvas etwa so:Get X und Y Pixelkoordinaten, wenn Iteration über HTML5 getImageData Leinwand

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

Wie berechne ich den aktuellen X- und Y-Pixelkoordinaten, dass ich bin beim?

Antwort

11

A Simple Arithmetic Sequence:

Dividieren die lineare Position durch die Breite. Das ist deine Y-Koordinate. Multiplizieren Sie diese Y-Koordinate mit der Breite und subtrahieren Sie diesen Wert von der linearen Position. Das Ergebnis ist die X-Koordinate.

Beachten Sie auch, dass Sie die lineare Position durch 4 teilen müssen, da es RGBA ist.

+0

Dude - vielen Dank dafür, ich habe meinen Kopf gegen eine Mauer für ein paar Stunden wurde hämmern mit diesem, jetzt sortiert – jcvandan

+0

Könnten Sie ein Beispiel geben? Ich glaube nicht, dass ich diese Sequenz vollständig verstehe. Sind die unten stehenden Antworten zufällig richtig? Ich kämpfe um die X- und Y-Koordinaten eines Pixels. Jede Hilfe würde sehr geschätzt werden. – Awin

+0

Ich denke, ich muss nur wissen, was "lineare Position" bedeutet. Ist das die Position im Datenfeld? Oder Pixelposition, die der Index/4 ist? – Awin

7

Dies sollte funktionieren

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

funktioniert nicht .. getestet – user889030

18

Korrigierte und getestete Version von Code:

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

funktioniert .. getestet – user889030

Verwandte Themen