2012-12-01 37 views
14

Tôi lặp lại trên một số dữ liệu hình ảnh lấy từ một canvas như vậy:Nhận X và Y Pixel phối khi iterating trên 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; 
    } 
} 

Làm thế nào để tính toán X hiện tại và Y Pixel phối rằng tôi tại?

Trả lời

11

Trình tự số học đơn giản:

Chia vị trí tuyến tính theo chiều rộng. Đó là tọa độ Y của bạn. Nhân giá trị Y đó theo chiều rộng và trừ giá trị đó khỏi vị trí tuyến tính. Kết quả là tọa độ X.

Cũng lưu ý, bạn sẽ phải chia vị trí tuyến tính cho 4 vì đó là RGBA.

+0

Dude - cảm ơn vì điều đó, tôi đã đập đầu tôi chống lại một bức tường gạch cho một vài giờ với điều này, được sắp xếp bây giờ – jcvandan

+0

Bạn có thể cung cấp một ví dụ không? Tôi không nghĩ rằng tôi hoàn toàn hiểu được trình tự này. Các câu trả lời dưới đây có đúng không? Tôi đang đấu tranh để có được tọa độ X và Y của một pixel. Bất kì sự trợ giúp nào đều được đánh giá cao. – Awin

+0

Tôi nghĩ tôi chỉ cần biết "vị trí tuyến tính" có nghĩa là gì. Đó có phải là vị trí trong mảng dữ liệu không? Hoặc vị trí pixel là chỉ số/4 ?? – Awin

7

này nên làm việc

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

không hoạt động .. đã thử nghiệm – user889030

18

Corrected và thử nghiệm phiên bản mã:

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

hoạt động .. đã kiểm tra – user889030

Các vấn đề liên quan