数组缓冲区IE10 - 类型化数组构造函数参数无效

时间:2014-10-01 09:31:21

标签: javascript arrays internet-explorer canvas

我使用Javascript画布来更改图像上的像素。在某些时候,我需要数组缓冲区来使用jsfeat.js库。

IE10在这一行告诉我“类型化数组构造函数参数无效”:

var imageData = ctx.getImageData(0, 0, W, H);
var data_u32 = new Uint32Array(imagedata.data.buffer);

当我在console.log imagedata.data.buffer时,它在IE10中给了我“undefined”。在Chrome中我有“ArrayBuffer {}”。

如果我直接传递数据,则效果不起作用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

IE10的.getImageData使用CanvasPixelArray而不是较新的Uint32Array。

(Uint32Array可用于IE10,但它没有在画布中实现)

CanvasPixelArray.data没有.buffer属性 - 这是导致错误警告的原因。

“手动”将imageData加载到data_u32的示例代码。

var imageData = ctx.getImageData(0, 0, W, H);

// init the array by size
var data_u32 = new Uint32Array(W*H*4);

// fill the array "manually"
var data=imageData.data;
for(var i=0;i<data.length;i++){
    data_u32[n]=data[n];
}