如何计算画布中的x和y坐标

时间:2016-07-17 05:18:30

标签: javascript canvas

我正在尝试通过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
  });
}

2 个答案:

答案 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坐标。

请检查以下代码:

&#13;
&#13;
j - (quo * cols);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

将像素地址作为索引并知道图像宽度。

match_parent