Comment comparer des images par le biais de md5 travail?
Cette méthode de comparer les valeurs des pixels de l'image? Je devine que ça ne marchera pas parce qu'ils sont de tailles différentes les unes des autres, mais ce qui si elles sont identiques, mais dans des formats différents? Par exemple, j'ai pris une capture d'écran et de les enregistrer comme .jpg
et un autre et de les enregistrer comme .gif
.
Un hachage vous permettra de comparer les 32 bits de long hachages seulement, ce qui est considérablement plus rapide que la comparaison des images de lui-même.
OriginalL'auteur TreeTree | 2011-01-31
Vous devez vous connecter pour publier un commentaire.
Un hachage MD5 est du binaire réel des données, de sorte que les différents formats sont complètement différents des données binaires.
donc, pour le hachage MD5 pour le match, ils doivent être identiques fichiers. (Il y a des exceptions dans frange cas.)
C'est en fait une façon légale d'application de la loi trouve des données qu'il considère comme de la contrebande. (en référence à des images)
OriginalL'auteur jondavidjohn
C'est une somme de contrôle MD5 - la même chose que vous voyez souvent lors du téléchargement d'un fichier, si le MD5 du fichier téléchargé correspond à l'MD5 donnée par le fournisseur, alors que le transfert de fichier a été un succès. http://en.wikipedia.org/wiki/Checksum Si il y a encore 1 peu de différence entre les 2 fichiers alors la résultante de hachage sera complètement différente.
En raison de la différence de codage entre un JPG et GIF, le 2 n'aura pas le même hash MD5.
Il est sous-entendu par le "Si il y a encore 1 peu de différence entre les 2 fichiers alors la résultante de hachage sera complètement différente." Je vais changer la réponse si.
OriginalL'auteur Gazler
Vous ne pouvez pas comparer à l'aide de la somme MD5, comme tous les autres affiches ont noté. Toutefois, vous pouvez comparer les images d'une manière différente, et il vous dira de leur similitude quel que soit le type d'image, ou de la même taille. Vous pouvez utiliser libPuzzle
http://libpuzzle.pureftpd.org/project/libpuzzle
C'est une grande bibliothèque pour la comparaison d'images et fonctionne très bien.
OriginalL'auteur profitphp
Un .jpg fichier commence par " JFIF, un .gif commence avec 'GIF' quand vous regardez les premières octets. Dans otherwords, en comparant les sur-octets disque de la "même" image "dans deux différents format est à peu près garantis pour produire deux hachages MD5, puisque le contenu du fichier diffèrent - même si l'image est la même image".
Faire une base de hachage de l'image de comparaison, il faut comparer deux images en utilisant le même format. Il serait très très difficile de produire une .format jpg et .gif de la même image permettant de comparer égal si vous avez converti à (disons) un .bmp. Ce serait la même fileformat, mais les exigences internes de l' .gif (8bit, RLE/compression sans perte LZW) c. s. les exigences internes de l' .jpg (24 bits, avec pertes de transformation cosinus discrète compression) dire qu'il est proche sur impossible de faire la même chose .bmp à partir de deux images source.
OriginalL'auteur Marc B
Si vous êtes en comparant les hachages puis chaque octet des deux images correspondent - ils ne peuvent pas utiliser des formats de compression différents, ou "se ressemblent". Ils doivent être identiques.
OriginalL'auteur Skilldrick
md5
est un algorithme de hachage, de sorte qu'il n'est pas comparer les images mais il compare données. Les données que vous mettez dans peut être presque n'importe quoi, comme le contenu d'un fichier. Il délivre alors un hashstring basé sur la contenu, qui sont les données brutes du fichier.Donc, fondamentalement, vous ne comparez pas images lors de l'alimentation de l'image dans
md5
mais la données brutes de l'image. L'algorithme de hachage ne sait rien à ce sujet, mais les données brutes, donc un jpg et un gif (ou tout autre format d'image) de la même capture d'écran ne sera plus jamais la même.Même si vous comparez le image décodée il ne sera pas mis le même hash, mais présentent de légères différences, l'œil humain ne peut voir (en fonction de la quantité de compression utilisé). Cela peut être différent lorsque l'on compare les données décodées de sans perte des images codées, mais je ne sais pas ici.
Prendre un coup d'oeil à la article de wikipedia pour une explication plus détaillée et technique de base sur les fonctions de hachage.
OriginalL'auteur Markus
md5 est un algorithme de hachage. C'est un code qui est calculé à partir d'un tas de données - toutes les données vraiment.
md5 n'est certainement pas unique, mais la chance que deux images différentes ont exactement le même code est assez petit. À cet effet, vous pouvez comparer les images par le calcul d'un code md5 de chacun d'eux et de comparer les codes.
C'est inutile, paranoïaque même. Voir ce pour les maths: stackoverflow.com/questions/537989/...
Oui, sans doute. Mais j'ai appris que vous ne pouvez jamais être sûr. C'est probablement 3 lignes de code pour faire une comparaison binaire, et vous ne devez le faire que si les deux md5s fait de match et d'autres vérifications simples (comme la taille du fichier, la taille des pixels ou des méta-informations) match de trop. Cela vous évitera d'avoir à hachage de chaque fichier. Seuls les fichiers avec les mêmes tailles et des méta-informations doivent être hachés. Je pense que cela pourrait vous donner une meilleure optimisation (en particulier lors de la comparaison des images plus grandes, comme la foto) que juste le hachage de chaque image que vous avez et de comparer ces valeurs de hachage. Mais cela dépend de la situation de cours.
Je vois maintenant que ce n'est pas sur les fichiers, mais sur les captures d'écran. Qui sera de peu d'utilité. Gif a une limite de profondeur de couleur et Jpeg souffre de la perte de qualité due à l'algorithme de compression. Il est improbable qu'une capture d'écran d'un jpg et une capture d'écran d'un gif résultat sera exactement la même image.
Dans ce cas, il serait préférable de faire correspondre pixel par pixel avec une tolérance. Les Pixels en dehors de la tolérance pourrait être compté comme bien. Ce sera le résultat d'une certaine "distance" entre les deux images. Les Images de la même taille et avec seulement une petite distance sont susceptibles d'afficher la même image.
OriginalL'auteur GolezTrol
Il ne sera toujours pas de travail. Toute image contient la partie en-tête et de l'image binaire de la mémoire tampon. Dans ce scénario
1. Le les en-têtes seront différentes entre les deux .jpg & .gif résultant dans une autre somme md5
2. Le tampon image elle-même peut être différent en raison de la compression des images utilisées par dire la .format jpg.
OriginalL'auteur nav