javascript - 无法从 ImageData 对象获取像素

标签 javascript html5-canvas imagedata

我正在尝试使用 canvas 从图像中提取像素element 和 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 的定义如下:

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

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

我哪里做错了?

enter image description here

最佳答案

您应该等到 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);
}

关于javascript - 无法从 ImageData 对象获取像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758532/

相关文章:

javascript - 添加 if/else 语句后游戏组件不会绘制

javascript - 需要 Angular Material md 复选框

javascript - HTML5 Canvas 不会渲染从 canvas.toDataURI() 接收的数据

html - flex 包装 : wrap - image + wrapper with width 100%

javascript - ImageData 数组中的索引逻辑是什么?

python - 如何知道 ImageDataGenerator() 将哪个标签分配给哪个图像类?

javascript - 如何在 Angularjs 中模拟 HTML 表单请求?

javascript - HTML Canvas 透明度永远不会达到不透明

swift - 将图像数据从一个 View Controller 传递到另一个 View Controller

javascript - 简单的 node.js 服务器没有错误处理失败的请求