Javascript InternetExplorer中的图像数据集
我有一个arraybuffer,名为Javascript InternetExplorer中的图像数据集,javascript,html,html5-canvas,arraybuffer,putimagedata,Javascript,Html,Html5 Canvas,Arraybuffer,Putimagedata,我有一个arraybuffer,名为MEM,比画布的宽度*高度大。我想把arrayBuffer数据绘制到画布上 imgData.data.set(…)应该可以工作,因为imgData.data是一个UInt8数组,它具有.set方法。它在FireFox和Chrome中都能工作,但在IE中我遇到了一个错误:对象不支持这个属性或方法:“set” 初始化: var MEM = new ArrayBuffer(2*1024*1024); var canvas, ctx, imgData; var in
MEM
,比画布的宽度*高度大。我想把arrayBuffer数据绘制到画布上
imgData.data.set(…)
应该可以工作,因为imgData.data是一个UInt8数组,它具有.set方法。它在FireFox和Chrome中都能工作,但在IE中我遇到了一个错误:对象不支持这个属性或方法:“set”
初始化:
var MEM = new ArrayBuffer(2*1024*1024);
var canvas, ctx, imgData;
var init = function() {
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
imgData=ctx.createImageData(canvas.width, canvas.height);
repaint();
};
重绘功能:
var repaint = function() {
// .... //
imgData.data.set(new Uint8Array(MEM, 0, canvas.width*canvas.height*4));
ctx.putImageData(imgData, 0, 0);
requestAnimationFrame(repaint);
};
有了这段代码,它就可以工作了
if(window.CanvasPixelArray) {
CanvasPixelArray.prototype.set = function(arr) {
var l=this.length, i=0;
for(;i<l;i++) {
this[i] = arr[i];
}
};
}
if(window.CanvasPixelArray){
CanvasPixelArray.prototype.set=函数(arr){
var l=此长度,i=0;
对于(;I您使用哪个版本的IE?根据和,ImageData.data
应该返回一个,而不是Unit8Array
;即使它是Unit8Array
,它也会返回一个。根据,ImageData.data
返回一个,它只具有length
属性。所以我猜您在IE上运气不好。也许您可以找到它使用ctx.createImageData(w,h)
对其进行nd?