这是我的代码
var canvas = document.getElementById("viewport"); // HTMLCanvasElement
var context = canvas.getContext('2d'); // CanvasRenderingContext2D
var image = new Image();
image.src = "images/a.png";
image.onload = function(){
context.drawImage(image, 0, 0);
newFunction();
};
function newFunction()
{
var imageHeight = image.naturalHeight;
var imageWidth = image.naturalWidth;
var data=[];
var imageData = context.getImageData(0,0,imageWidth,imageHeight);
var data = imageData.data;
alert(data);
}
这段代码并没有给我数组的元素。相反,它将[object uint8clampedarray]作为警告信息。
答案 0 :(得分:0)
你必须使用循环来迭代类型化数组,因为他们目前没有forEach
方法:
var data = imageData.data;
var i, length = data.length;
for(i = 0; i < length; i++) {
// data[i]
}
有人建议为ES6实现迭代器,在这种情况下你可以这样做:
var iteratorArray = data[Symbol.iterator]();
console.log(iteratorArray.next().value);
或更简单的循环:
for (let v of data) {
console.log(v);
}
但同样,后两者尚未普及。