Comparer 2 photos pixel par pixel

marmotte18

XLDnaute Impliqué
Bonjour,

Est-il possible de comparer 2 photos jpg, pixel par pixel et d'affirmer avec certitude qu'elles sont parfaitement identiques ou non ?

Merci par avance
 

chris

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonjour

Cela me parait peu probable : tu peux comparer deux fichiers bit à bit. Il y a des outils qui le font et sans doute une dll ou api Windows.

Mais comparer les données internes au jpg me parait difficile car c'est un format compressé et donc on n'enregistre pas pixel par pixel.
La même photo compressée à un taux différent ne donne pas le même fichier. Visuellement c'est sensiblement la même photo à la qualité près.
 

marmotte18

XLDnaute Impliqué
Re : Comparer 2 photos pixel par pixel

Bonsoir chris,

Merci pour ta réponse.

J'aurais du ajouter dans l'énoncé de mon problème que je recherche les doublons de photos (même taux de compression, même format, même sujet, même cadrage, même taille, ...)

Eléments qui peuvent différer : les noms, les dates, l'auteur.

Bien entendu, les photos ne sont pas nécessairement dans le même répertoire.
 

Risleure

XLDnaute Occasionnel
Re : Comparer 2 photos pixel par pixel

Bonsoir marmotte18, chris, le Forum

Pourquoi ne pas utiliser un utilitaire tout fait et en français et GRATUIT ;), rapide et simple comme "Traqueur" actuellement V3.1.13

On peut "cibler" les fichiers à traquer en jouant sur les paramètres.

A+
 

job75

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonsoir marmotte18, chris, Risleure,

Essayer peut-être cette méthode :

1) clic droir sur l'icône de chacun des 2 fichiers JPEG => Ouvrir avec => Microsoft Office Excel

2) enregistrer les 2 fichiers sous les noms fichier1 et fichier2, au format "Classeur Microsoft Office Excel"

3) exécuter cette macro (la mettre n'importe où) :

Code:
Sub CompareImages()
Dim F1 As Worksheet, F2 As Worksheet, cel As Range
Set F1 = Workbooks("fichier1.xls").Sheets(1)
Set F2 = Workbooks("fichier2.xls").Sheets(1)
For Each cel In F1.Range(F1.UsedRange, F2.UsedRange.Address)
  If cel <> F2.Range(cel.Address) Then
    MsgBox "Images différentes..."
    Application.Goto cel 'pour repérage
    Exit Sub
  End If
Next
End Sub

A+
 

YANN-56

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonsoir marmotte18, chris, Risleure, Job, et à ceux qui passeront par ici,

J'avais pensé à: "DateLastModified" pour pouvoir faire une comparaison
entre plusieurs fichiers.

Car s'ils ont le même instant, ils ne peuvent pas être différents.

Job: ton idée est vraiment lumineuse!
Je ne l'ai pas encore exploitée, mais j'en soupçonne l'utilisation
pour repérer les frackes (Pardon; je ne suis pas certain de l'orthographe)

Peut-être ais-je dis une bêtise, mais c'est vers là que je chercherais.

Amicalement à tous.

Yann
 

job75

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonjour Yann, le fil, le forum,

Dans la foulée de mon post #5 j'ai réalisé le fichier ci-joint.

La macro est dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Mais finalement cette méthode ne convient probablement pas.

En effet, si l'on comprime une photo, ou si on la modifie par Paint, le fichier correspondant fichier1.xls ou fichier2.xls n'est pas modifié pour autant.

Edit : mais si ça marche !! j'ai fait simplement une grossière erreur d'indice, voir le post #9...

A+
 

Pièces jointes

  • Recherche des photos doublons.xls
    38 KB · Affichages: 73
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonjour à tous

Cela me paraît difficle de vouloir comparer les doublons d'images d'un disque dur par exemple (mais il doit exister des logiciels qui le font :confused:).

Par contre si on a 2 images qui ont le même nom et la même talle à l'octet près, alors il y a 99.99 % de chance que ce soit la même photos.

En plus quand une photo change de nom, c'est soit pour la rendre plus expicite, soit pour la retravailler avec un logiciel de traitement d'images.

Enfin, il faut aussi aller voir vers les Exif tags.

Mais il faut toujours penser à conserver ses originaux, c'est la base de la photo numérique.

Encore une fois, il serait bien de connaître la finalité de la chose plutôt que de partir dans tous les sens.
 

job75

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Re, salut Michel,

J'avais fait une grossière erreur d'indice dans la macro du post précédent.

Utiliser cette nouvelle version du fichier, tout va bien maintenant :)

A+
 

Pièces jointes

  • Recherche des photos doublons(1).xls
    38.5 KB · Affichages: 58

YANN-56

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Bonjour Job, et à ceux qui passeront par ici,

Tu travailles sur une feuille Excel, et là je ne suis pas à l'aise!
(Aucune expérience quant au langage)

De mon coté je vais tenter de réaliser un USF comparant les propriétés des photos.
Pour moi il est évident que si elles ont été modifiées celles-ci doivent être différentes.

J'imagine mal comment elles pourraient être identiques
tant par la size que par la dernière date de dernière modification.

Amicalement, et à plus tard.

Yann

P.S. Merci à Risleure pour l'adresse.
J'ai téléchargé, mais pas encore installé.
 

MJ13

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Re, Bonjour Job

Merci Job, j'ai regardé ton fichier, et je vois un peu le genre :confused:.

Comme le sujet m'intéresse au plus haut point ;).

Mais j'ai mis cela au début, pour qu'on puisse mettre en dur le chemin (ex: C:\Mes images). Mais après cela ne doit pas correspondre.

Code:
Private Sub CommandButton1_Click()
Dim p$, cel As Range, nomfich$, tablo$(), n&, lig&, i&, F1 As Worksheet, j&, F2 As Worksheet
'p = ThisWorkbook.Path & "\"
'---Liste des fichiers à étudier---
For Each cel In Range([A6], [A65536].End(xlUp))
  'nomfich = Dir(p & cel & "\*.JPG") '1ère photo du dossier
  nomfich = Dir(cel & "\*.JPG") '1ère photo du dossier
  While nomfich <> ""

Pourrais tu expliquer un peu ce que fait ton programme (dernière version) et le temps d'analyse sur 100 images par exemple de 2 Mo en Jpg?

Merci d'avance :).
 

YANN-56

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Re,
J'ai commencé à construire un truc, mais je dois abandonner.

1) La dernière date de modification ne peut être valable que sur un même poste.
Par exemple si l'on a reçu ces photos par Mail, elles auront toujours les dates du
transfert sur son propre poste.
(L'expéditeur pourrait avoir préalablement bidouillé ses photos)

2) La Size me semble n'être liée qu'à la taille et la résolution.
Il peut avoir changé la couleur d'un Pixel, sans avoir touché à autre chose...

3) Peut-être en fouillant dans les propriétés étendues, mais là cela requière
d'installer la DLL idoine, et je n'ai pas envie d'ajouter autres bébêtes sur mon ordi.

Le sujet est intéressant, mais je ne peux aller plus loin... Désolé.

Amicalement, avec mes vœux de bonnes suites.
(Au regard des compétences qui s'y attèlent; je n'ai aucun doute)

Yann
 

job75

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Re Michel, Yann,

@ Michel :

1) La macro étudie uniquement les photos placées dans les sous-dossiers listés en colonne A (il peut n'y avoir qu'un seul sous-dossier).

Ces photos sont transformées 2 par 2 (combinaisons) en fichiers Excel fichier1.xls et fichier2.xls

Ce sont ces 2 fichiers Excel qui sont comparés.

2) Le fichier contenant la macro doit être placé à coté de ces sous dossiers.

On peut aussi, si l'on préfère, indiquer le chemin d'accès du dossier contenant ces sous-dossiers en écrivant par exemple :

Code:
p = "C:\Mes images\"

3) Ce qui prend du temps c'est l'ouverture, l'enregistrement (SaveAs) et la fermeture d'un fichier (ainsi que la mise à jour de la barre des tâches).

Sur mon ordi (2 Ghz, 1 Go de Ram) ces opérations prennent 0,86 s pour une photo d'environ 1,5 Mo.

Si l'on traite 100 photos, ces opérations se répéteront environ 5050 fois, ce qui prendra 72 mn. Et ceci en supposant qu'il n'y a pas de doublon.

C'est très long, mais comme l'a bien vu marmotte18, il faut avoir à sa disposition les fichiers Excel (donnant donc les valeurs des pixels) si l'on veut s'assurer que 2 photos sont identiques.

@ Yann : 2 photos peuvent être identiques même si les dates de dernière modification sont différentes...

A+
 

marmotte18

XLDnaute Impliqué
Re : Comparer 2 photos pixel par pixel

Bonsoir tout le monde,

Merci pour votre participation très active !

Quelques mots sur les raisons de ma demande. J'ai la certitude que bon nombre de photos sont chez moi en double voir en triple avec des noms différents ou se trouvant dans des répertoires divers et variés. Cela vient du fait que dans ma famille, tout le monde se passe des photos et très souvent on me retourne à moi ou à ma femme mes propres photos après avoir seulement changé les titres. Là-dessus peuvent s'ajouter le contenu de clés USB que l'on ne vide pas après avoir transférer les photos sur le disque dur. J'ai beaucoup de mal à convaincre les utilisateurs du PC à ne pas procéder comme cela.

J'ai donc envie de faire du ménage.

Ma méthode actuelle est lister sous Excel l'ensemble de mes photos et de les trier par taille. Je mets en évidence les doublons potentiels sur ce paramètre et je compare les photos correspondantes de visu et je supprime à la main celles qui doivent l'être.

J'en ai actuellement un millier à analyser. C'est énorme ! Sur 68 cas dépouillés manuellement, 46 sont de réels doublons de photos.
 

YANN-56

XLDnaute Barbatruc
Re : Comparer 2 photos pixel par pixel

Re Job, ;)

@ Yann : 2 photos peuvent être identiques même si les dates de dernière modification sont différentes...

Je suis totalement d'accord avec toi;
et ta remarque s'ajoute à ce que je disais sur mon post #12

La dernière date d'enregistrement ne peut être qu'une première piste pour
soupçonner une modification.... Quant aux autres critères; c'est là que j'ai échoué.

Je suis attentivement ce fil, tes idées et celles d'autres participants qui peut-être suivront.

Finalement, je vais continuer à chercher de mon coté pour voir si...

Amicalement

Yann
 

Discussions similaires

Réponses
12
Affichages
460

Statistiques des forums

Discussions
312 345
Messages
2 087 486
Membres
103 557
dernier inscrit
gerard.messerlin68@orange