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

Array buffer IE10 - Typed array constructor argument is invalid

本文关键字:数组 参数 无效 构造函数 类型化 缓冲区 IE10-      更新时间:2023-09-26

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,而不是更新的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];
}