我使用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 {}”。
如果我直接传递数据,则效果不起作用。
我该如何解决这个问题?
答案 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];
}