Итак, есть много примеров того, как написать весь пиксель из представления Uint32Array объекта ImageData. Но возможно ли читать весь пиксель без увеличения счетчика 4 раза? Из hacks.mozilla.org запись пиков rgba выглядит как this.
var imageData = ctx.getImageData(0, 0, canvasWidth, canvasHeight);
var buf = new ArrayBuffer(imageData.data.length);
var buf8 = new Uint8ClampedArray(buf);
var data = new Uint32Array(buf);
for (var y = 0; y < canvasHeight; ++y) {
    for (var x = 0; x < canvasWidth; ++x) {
        var value = x * y & 0xff;
        data[y * canvasWidth + x] =
            (255   << 24) |    // alpha
            (value << 16) |    // blue
            (value <<  8) |    // green
             value;            // red
    }
}
imageData.data.set(buf8);
ctx.putImageData(imageData, 0, 0);
Но как я могу прочитать весь пиксель из одного смещения в 32-битном представлении ImageData? Здесь то, что я нахожу в замешательстве, не должно быть ниже buf32 длиной 256/4 = 64?
// 8x8 image
var imgd = ctx.getImageData(0, 0, canvasWidth, canvasHeight),
    buf32 = new Uint32Array(imgd.data);
console.log(imgd.data.length);  // 256
console.log(buf32.length);      // 256  shouldn't this be 256/4 ?
спасибо!