Javascript 数组缓冲区IE10类型的数组构造函数参数无效
Im使用Javascript画布更改图像上的像素。有时我需要数组缓冲区来处理jsfeat.js库 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
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边缘检测器)