md5 sur images - trouver des images identiques

Le
yves
Bonjour,

suite au questionnement d'un ami qui souhaitait trouver les images
dupliquées sur son disque, je me suis lancé dans l'écriture d'un petit
script python pour comparer les empreintes numériques md5 des images.

Le problème, c'est qu'en faisant des tests, il y a des images
différentes (fichier .jpg) qui ont la MEME EMPREINTE NUMERIQUE:
je pense faire une erreur quelque part: quelqu'un peut-il me dire
laquelle ?

Les images (elles sont très similaires, produites à partir de copies
d'écran dans le presse-papiers, mais néammoins différentes (même pas
la même taille).
14.jpg:
http://cjoint.com/?eioUUiwHLR
24.jpg
http://cjoint.com/?eioVUja5Zb

Mon script:
******************
import md5
import os

img_a = '14.jpg'
img_b = '24.jpg'

fa = open(img_a)
fra = fa.read()
a = md5.new(fra)
print a.digest()
print os.stat(img_a)

fb = open(img_b)
frb = fb.read()
b = md5.new(frb)
print b.digest()
print os.stat(img_b)

print a.digest() == b.digest()
*******************************
Le resultat du script:
„‚<‘N€
æAà·Á 
(33206, 0L, 0, 0, 0, 0, 187976L, 1176036410, 1176034877, 1176034877)
„‚<‘N€
æAà·Á 
(33206, 0L, 0, 0, 0, 0, 188290L, 1176036471, 1176034885, 1176034885)
True


Pour résoudre le problème posé par mon ami, il a fdupes:
http://en.wikipedia.org/wiki/Fdupes

Mais cette histoire de md5 me titille.

Des idées ?
--
Yves
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MCI, Shadok Gouroudoudou
Le #601184
Bonjour,

C'est bien d'ouvrir un nouveau md5, mais il faut l'alimenter avec le
contenu du fichier.

Un exemple :


import md5
BLOCKSIZE = 1024*1024
fichier='c:\velo.jpg'
f = open(fichier, "rb")
m = md5.new()
while 1:
block = f.read(BLOCKSIZE)
if not block:
break
m.update(block)
f.close()

print 'Fichier :'+fichier
#print 'Md5 ascii (16 car.):'+m.digest()
print 'Md5 hexa (32 car.):'+m.hexdigest()









--
@-salutations

Michel Claveau
Publicité
Poster une réponse
Anonyme