gpt4 book ai didi

javascript - getImageData 总是返回 0

转载 作者:太空狗 更新时间:2023-10-29 13:47:44 24 4
gpt4 key购买 nike

我一直在尝试制作一个脚本来比较 HTML5 和 Javascript 中的两个图像。但出于某种奇怪的原因,它总是返回图像完全相同。

在查看问题可能出在哪里时,我发现由于某种奇怪的原因,每个像素的每个数据值都返回了“0”。

那么,知道我做错了什么吗? :)

出于某种原因,我觉得它很简单,但我刚刚了解了 canvas 元素,所以是的。

这是我的代码:

function compareImg() {
var c1 = document.getElementById("c");
var ctx1 = c1.getContext("2d");
var c2 = document.getElementById("c2");
var ctx2 = c2.getContext("2d");

var match = 0;

var img1 = new Image();
img1.src = "cat.jpg";
img1.onload = function() {
ctx1.drawImage(img1, 0, 0);
}
var img2 = new Image();
img2.src = "bird.jpg";
img2.onload = function() {
ctx2.drawImage(img2, 0, 0);
}


for(var x = 0; x<c1.width; x++) { // For each x value
for(var y = 0; y<c1.height; y++) { // For each y value
var data1 = ctx1.getImageData(x, y, 1, 1);
var data2 = ctx2.getImageData(x, y, 1, 1);
if (data1.data[0] == data2.data[0] && data1.data[1] == data2.data[1] && data1.data[2] == data2.data[2]) {
match++;
}
}
}
var pixels = c1.width*c1.height;
match = match/pixels*100;
document.getElementById("match").innerHTML = match + "%";
}

最佳答案

您无需等到图像加载并绘制完成后再进行比较。试试这个:

var img = new Image;
img.onload = function(){
ctx1.drawImage(img,0,0);
var img = new Image;
img.onload = function(){
ctx2.drawImage(img,0,0);
// diff them here
};
img.src = 'cat.jpg';
};
img.src = 'cat.jpg';

如上所示,你应该总是set your src after your onload .

关于javascript - getImageData 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694599/

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