Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

md5 sur images - trouver des images identiques

1 réponse
Avatar
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

1 réponse

Avatar
MCI, Shadok Gouroudoudou
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