J'ai essayé de faire un script qui compare deux images en HTML5 et Javascript. Mais pour une raison étrange, il revient toujours que les images sont complètement les mêmes.getImageData retourne toujours 0
Et en regardant ce que le problème pourrait être, j'ai découvert que chaque valeur de données de chaque pixel retourné, pour une raison étrange, "0".
Donc, une idée de ce que j'ai mal fait? :)
Pour une raison quelconque, j'ai l'impression que c'est quelque chose de très simple, mais je viens d'apprendre à propos de l'élément de toile, alors oui.
Ceci est mon code:
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 + "%";
}
Merci d'avoir fait écho à ma superstition sur l'ordre d'assigner" src "et" onload ". :-) Peut-être que ce n'est pas une superstition après tout! – Pointy
@Pointy [Non, ce n'est pas juste de la superstition.] (Http://stackoverflow.com/questions/4776670/should-setting-an-image-src-to-dataurl-be-available-immédiatement) – Phrogz
Fascinant, @ Phrogz! Je me sens justifié pour toutes ces années à dire aux gens de faire ça :-) – Pointy