gpt4 book ai didi

javascript - 为什么我的从图像获取像素数据的代码不起作用?

转载 作者:行者123 更新时间:2023-12-01 02:16:24 24 4
gpt4 key购买 nike

我编写了这段代码来循环遍历图像中的每个像素并将其 RGBA 值输出到控制台。为什么它没有按预期工作?我似乎得到了 PixelData 的所有 [0,0,0,0] 。我尝试了 stackoverflow.com 上的几段代码,但没有帮助。我的最终目标是将这些颜色与其他颜色列表进行比较,并为每个像素选择最接近的颜色,但一旦我得到这部分的答案,我应该能够单独做到这一点。

<!doctype html>
<html>
<head>
<img id="myImage" src="img.png" width="64px" height="64px"></img>
<script>
var img = document.getElementById('myImage');
var mycanvas = document.createElement('canvas');
mycanvas.width = img.width;
mycanvas.height = img.height;
var context = mycanvas.getContext('2d');
context.drawImage(img, 0, 0, img.width, img.height);
for(var x=1;x<=16;x++){
for(var y=1;y<=16;y++){
var pixelData = context.getImageData(x, y, 1, 1).data;
console.log("x="+x.toString()+" y="+y.toString()+" pD="+pixelData.toString()+" ");
}}
</script></head>
<body></body>
</html>

最佳答案

您可能没有给图像足够的时间来加载和渲染。尝试使用img.onload像这样:

var img = document.getElementById('myImage');

img.onload = function() {
var mycanvas = document.createElement('canvas');
mycanvas.width = img.width;
mycanvas.height = img.height;
var context = mycanvas.getContext('2d');
context.drawImage(img, 0, 0, img.width, img.height);
for(var x=1;x<=16;x++){
for(var y=1;y<=16;y++){
var pixelData = context.getImageData(x, y, 1, 1).data;
console.log("x="+x.toString()+" y="+y.toString()+" pD="+pixelData.toString()+" ");
}
}
}

哦,还有一件事......移动你的 <img...>标记出head HTML 部分并进入 body 。我不确定图像是否会加载(如果它位于 head 中)部分。如果您这样做,您的脚本将必须遵循图像,或者您必须将脚本包装在文档完成加载时调用的函数中,例如<body onload="init()"> .

更新:

我发现这篇关于放置img的帖子在你的head部分。听起来你很可能会侥幸逃脱,但你不应该指望它:Will an html image tag execute in the head tag

关于javascript - 为什么我的从图像获取像素数据的代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com