Je suis en train d'écrire une fonction pour déterminer si deux de taille égale bitmaps sont identiques ou pas. La fonction que j'ai droit compare simplement un pixel à la fois dans chaque image, retour faux sur le premier non-égalité de pixel.
Bien que cela fonctionne, et fonctionne bien pour les petites images, dans la production, je vais utiliser cela dans une boucle serrée, et sur de plus grandes images, j'ai donc besoin d'une meilleure façon. Quelqu'un aurait-il des recommandations?
La langue que j'utilise est C# par la manière - et oui, je suis déjà à l'aide de l' .LockBits méthode. =)
Edit: j'ai codé les mises en oeuvre de certaines des suggestions, et ici sont les points de repère. Le programme d'installation: deux identiques (dans le pire des cas), des bitmaps, 100x100 dans la taille, avec 10 000 itérations chaque. Voici les résultats:
CompareByInts (Marc Gravell) : 1107ms
CompareByMD5 (Skilldrick) : 4222ms
CompareByMask (GrayWizardX) : 949ms
Dans CompareByInts et CompareByMask je suis en utilisant des pointeurs pour accéder à la mémoire directement; dans le MD5 méthode que je suis en utilisant le Maréchal.Copie de récupérer un tableau d'octets et le passer comme un argument de MD5.ComputeHash. CompareByMask n'est que légèrement plus rapide, mais étant donné le contexte, je pense que toute amélioration est utile.
Merci à tous. =)
Edit 2: vous avez Oublié de tourner optimisations - faire qui donne GrayWizardX réponse encore plus d'un coup de pouce:
CompareByInts (Marc Gravell) : 944ms
CompareByMD5 (Skilldrick) : 4275ms
CompareByMask (GrayWizardX) : 630ms
CompareByMemCmp (Erik) : 105ms
Intéressant de noter que la méthode MD5 n'améliorent pas du tout.
Edit 3: Posté ma réponse (comparateur de mémoire) qui a fait sauter les autres méthodes hors de l'eau. o.O