无法从ImageData对象获取像素

时间:2019-09-02 14:18:41

标签: javascript html5-canvas imagedata

我正在尝试使用canvas元素和ImageData类从图像中提取像素,但是几乎没有成功。

我的代码是:

var image = new Image();
image.src = "<path to PNG image file>";
var context = document.getElementById("my-canvas").getContext("2d");
context.drawImage(image, 0, 0);
var imageData = context.getImageData(0, 0, 1024, 1024);
console.log(imageData);

画布的定义如下:

<canvas id ="my-canvas" width="1024" height="1024">
</canvas>

根据MDNdata字段应为UInt8大小为4194304(1024 * 1024 * 4)的数组。相反,我得到了一个奇怪的嵌套结构(如图所示),并且所有值均为0。该图像是1024 * 1024 PNG图像。

我在哪里做错了?

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该等待,直到加载了PNG(ImageData初始化为零):

var image = new Image();
image.onload = extractPixelsFromPNG;
image.src = "<path to PNG image file>";
var context = document.getElementById("my-canvas").getContext("2d");

function extractPixelsFromPNG() {
    context.drawImage(image, 0, 0);
    var imageData = context.getImageData(0, 0, 1024, 1024);
    console.log(imageData);
}