我正在尝试通过getImageData获取的数据来确定x和y坐标。以下是我的代码示例:
var img = ctx.getImageData(0, 0, c.width, c.height);
var pix = [],
coords = [];
for (var i = 0; i < img.data.length; i+=4) {
if (img.data[i]!== 0){
pix.push(i);
}
}
for (var j in pix) {
//wrong co-ordinate
var y = Math.floor(pix[j]/c.width);
//don't know how to determine x position
var x = 0;
coords.push({
x:x,
y:y
});
}
答案 0 :(得分:1)
主要计算方法是:
gradle build
如果这是我们假设的像素阵列:
if (img.data[i] !== 0) {
// Please look up in the explaination part for this.
j = i / 4;
quo = Math.floor(j / cols);
pix.push({
x: quo,
y: j - (quo * cols)
});
}
然后相应的imageData将是:
0 1 2 3
4 5 6 7
首先我们迭代0,1,2,3 4,5,6,7 8,9,10,11 12,13,14,15
16,17,18,19 20,21,22,23 24,25,26,27 28,29,30,31
,跳转阻止获得0,4,8,...
当我们i += 4
时,我们将此图像数据转换为原始像素数组,例如。如果i = 20,则在像素阵列中表示5。
现在我们得到像素数组,对于x坐标:
j = i / 4;
将它除以列,并给出它所属的行。
在找到列索引时:我们这样做:
quo = Math.floor(j / cols);
这意味着,(quo * cols)给出该行的第一个元素。减去它给我,在该行的第一个元素有多少元素后,我会得到它。这只是列索引。在这种情况下我们的x坐标。
请检查以下代码:
j - (quo * cols);
&#13;
答案 1 :(得分:1)
将像素地址作为索引并知道图像宽度。
match_parent