Javascript 数组缓冲区IE10类型的数组构造函数参数无效

Javascript 数组缓冲区IE10类型的数组构造函数参数无效,javascript,arrays,internet-explorer,canvas,Javascript,Arrays,Internet Explorer,Canvas,Im使用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中给出了“未定义”。在Chrome中我有“ArrayB

Im使用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中给出了“未定义”。在Chrome中我有“ArrayBuffer{}”

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


如何修复此问题?

IE10的
。getImageData
使用的是CanvasPixelArray,而不是较新的UINT32阵列

(IE10可以使用UINT32阵列,但它没有在画布中实现)

CanvasPixelArray.data没有
.buffer
属性——这就是错误警告的原因

将图像数据“手动”加载到数据中的示例代码\u 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];
}
var-imageData=ctx.getImageData(0,0,W,H);
//按大小初始化数组
var数据_u32=新的UINT32阵列(W*H*4);
//“手动”填充数组
var数据=imageData.data;

对于(var i=0;i什么是
imagedata
?您如何设置它?只是一个简单的ctx.getImageData。我编辑了我的问题谢谢您的回答,当我回到它时,我会在我的项目中尝试它。如果它有效,我会告诉您!它不适合我。首先数组的长度必须是
W*H
,因为使用
var data\u u32=new Uint32Array(imageData.data.buffer);
data_u32.length
等于
imageData.data.length/4
等于
W*H
。然后在你的代码中你指的是一个未设置的
n
。有了这个值得尊敬的,我仍然没有得到我期望的结果。(我正在使用JSFEAT的canny边缘检测器)