S' il est necessaire de comparer les images bit a bit, une solution
plus rapide serait
d'utiliser la function StrComp en mode binaire
apres avoir "transfere" ( ou convertit ) les images vers des memoryBlock
Bon courage
Le mercredi, 23 avr 2008, à 10:51 Europe/Paris, Eric de La Rochette a
écrit :
Le 23-avr.-08 à 07:45, Eric Ferrer a écrit :
(...)
Ensuite, la seule solution que je vois est une comparaison pixel à
pixel...
Certainement pas très rapide, mais bon :
for y = 0 to image1.height-1
for x = 0 to image1.width-1
if image1.RGBSurface.Pixel(x, y) <> image2.RGBSurface.Pixel(x, y)
then
return false
end if
next
next
return true
Selon la taille des images, cette fonction sera certainement très
très lente.
D'un autre coté, si les images sont différentes, il y a de fortes
chances qu'elle retourne False assez rapidement. Juste une chose, par
habitude, j'aurai tendance à penser qu'il vaut mieux les comparer de
façon verticale c'est à dire en inversant les deux boucles. D'abord X,
et ensuite Y. En effet, pour ce qui concerne mon expérience
personnelle, j'ai plus souvent des images avec des bandes noires
horizontale en haut et en bas. Du coup, la boucle risquerait de mettre
plus de temps avant de rencontrer une différence.
D'ailleurs, l'algorithme le plus évolué et efficace à mon sens, serait
celui qui compare à partir du centre de l'image... Pas forcément
beaucoup plus compliqué à écrire.
Mais peut-être n'est-il pas nécessaire de comparer chaque pixel un à
un.
Peut-être 1 pixel sur 10 suffirait ?
J'aime bien cette approche....
Bon courage
Pareil
Eric
Pareil aussi !!!! ;-)
|