在HTML5 canvas getImageData上迭代时获取X和Y像素坐标

jcv*_*dan 20 javascript html5-canvas

我正在迭代从canvas类似的一些图像数据,所以:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何计算当前的X和Y像素坐标?

use*_*153 30

已更正和测试的代码版本:

var x = (i / 4) % this.el.width;
var y = Math.floor((i / 4) / this.el.width);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“this.el.width”也可以替换为“imageData.width”。 (2认同)

小智 13

一个简单的算术序列:

将线性位置除以宽度.那是你的Y坐标.将Y坐标乘以宽度,并从线性位置减去该值.结果是X坐标.

另请注意,由于它是RGBA,因此必须将线性位置除以4.

  • 我想我只需要知道“线性位置”是什么意思。那是数据数组中的位置吗?或者像素位置是 index/4 ?? (3认同)