Html 从画布获取y位置是错误的

Html 从画布获取y位置是错误的,html,arrays,canvas,coordinates,Html,Arrays,Canvas,Coordinates,有时y坐标大于imagedata的高度。谁能帮我找到我的错误! 宽度为320像素,高度为240像素。 这是我的密码: function countPixels(context) { var nAlive = 0, all = []; var w = canvas.width; var p = context.getImageData(0, 0, canvas.width, canvas.height).data; for (var y = 0, i

有时y坐标大于imagedata的高度。谁能帮我找到我的错误! 宽度为320像素,高度为240像素。 这是我的密码:

function countPixels(context) {
    var nAlive = 0,
        all = [];
    var w = canvas.width;
    var p = context.getImageData(0, 0, canvas.width, canvas.height).data;
    for (var y = 0, i = 0; y < canvas.height; y++)
        for (var x = 0; x < canvas.width; x++, i += 4) {
            if (p[i] == 255 || p[i + 1] == 255 || p[i + 2] == 255) //Not black
            {
                nAlive++;
                var xc = i % w;
                var yc = parseInt(i / w, 10);
                var pos = {};
                pos.x = xc;
                pos.y = yc;
                all.push(pos);
            }
        }
    var percent = ((canvas.width * canvas.height) / 100) * nAlive;
    console.log("Count: " + nAlive + ",percent: " + percent + ",all: " + JSON.stringify(all));
    // $("#notifies").append("Count: "+nAlive+",percent: "+ percent+",all: "+JSON.stringify(all));
    return {
        percentage: parseFloat(percent),
        positions: all
    };
}
函数countPixels(上下文){
变量=0,
全部=[];
var w=画布宽度;
var p=context.getImageData(0,0,canvas.width,canvas.height);
对于(变量y=0,i=0;y
下面是函数调用:

var tmp = countPixels(ctx2);
ctx2.strokeStyle = "blue";
$.each(tmp.positions, function(i, value) {
    // if (ctx2.isPointInPath(value.x, value.y))
    $('div').eq(0).append("i: " + i + " " + value.x + ", " + +value.y + '</br>');
    ctx2.rect(value.x, value.y, 5, 5);
});
ctx2.stroke();
var tmp=countPixels(ctx2);
ctx2.strokeStyle=“蓝色”;
$。每个(tmp位置、功能(i、值){
//if(ctx2.isPointInPath(value.x,value.y))
$('div').eq(0).append(“i:“+i+”+value.x+”,“+value.y+”
”); ctx2.rect(值.x,值.y,5,5); }); ctx2.stroke();
为什么不简单地使用
x
y
而不是计算
i%w
i/w
?我遗漏了什么?@MrLister:谢谢,这么简单,哦,我的好,问题是在显示器前面。好吧,在这种情况下,问题是
I
的大小是你想象的四倍,计算单个颜色通道而不是像素。;)