2012-12-01 10 views
14

ja Iterowanie nad niektóre dane obrazu wyciągnął z canvas tak:Get X i Y pikseli współrzędne podczas iteracji nad 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; 
    } 
} 

Jak obliczyć aktualną X i Y pikseli współrzędne, że jestem w?

Odpowiedz

11

proste arytmetyczno sekwencji:

Podzielić położenia liniowego na szerokość. To jest twoja współrzędna Y. Pomnóż tę współrzędną Y przez szerokość i odejmij tę wartość od położenia liniowego. Wynikiem jest współrzędna X.

Należy również pamiętać, że musisz podzielić liniową pozycję na 4, ponieważ jest to RGBA.

+0

Dude - dzięki za to, byłem walić głową o ścianę z cegieł na kilka godzin z tym, posortowane teraz – jcvandan

+0

Czy mógłbyś podać przykład? Nie sądzę, że w pełni rozumiem tę sekwencję. Czy poniższe odpowiedzi są poprawne? Próbuję uzyskać współrzędne X i Y piksela. Każda pomoc byłaby bardzo cenna. – Awin

+0

Myślę, że po prostu muszę wiedzieć, co znaczy "pozycja liniowa". Czy to jest pozycja w tablicy danych? Lub pozycja piksela, która jest indeksem/4? – Awin

7

To powinno działać

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

nie działa. Testowane – user889030

18

Poprawione i testowano wersję kodu:

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

działa .. przetestowane – user889030

Powiązane problemy