[ EDIT # 1 von OP: Es stellt sich heraus, dass diese Frage vom Exiftool-Ersteller / Betreuer Phil Harvey in einem doppelten Thread im ExifTool-Forum recht gut beantwortet wurde. ]
[ EDIT # 2 by OP: Aus ExifTool FAQ : Es wird nicht garantiert, dass ExifTool Metadaten vollständig aus einer Datei entfernt, wenn versucht wird, alle Metadaten zu löschen. Siehe 'Einschränkungen für Autoren'.]
Ich möchte meine alten Festplatten nach Fotos durchsuchen, die sich nicht auf meinem aktuellen Sicherungslaufwerk befinden. Zu den Formaten gehören JPG, PNG, TIF usw. sowie verschiedene Rohformate (verschiedene Kameramodelle und Hersteller).
Ich interessiere mich nur für die Eindeutigkeit des Bildes selbst und nicht für die Eindeutigkeit aufgrund von Unterschieden beispielsweise bei den Werten von Exif-Tags, dem Vorhandensein / Fehlen eines bestimmten Exif-Tags selbst, eingebetteten Miniaturansichten usw.
Auch wenn ich keine Beschädigung / Datenverrottung zwischen verschiedenen Kopien ansonsten identischer Bilder erwarte, möchte ich dies sowie Unterschiede aufgrund von Größenänderungen und Farbänderungen feststellen.
[ Edit # 3 by OP: Zur Verdeutlichung: Ein kleiner Prozentsatz falsch positiver Ergebnisse ist tolerierbar (eine Datei wird als eindeutig eingestuft, wenn dies nicht der Fall ist), und falsch negative Ergebnisse sind höchst unerwünscht (eine Datei wird fälschlicherweise als Duplikat eingestuft). ]]
Mein Plan ist es, die Eindeutigkeit basierend auf md5sums zu identifizieren, nachdem alle Metadaten entfernt wurden.
Wie kann ich die Metadaten entfernen?
Wird exiftool -all= <filename>
ausreichen?
quelle
file
wird RAW-Bildformate nicht erkennen undfind
funktioniert nur mit Erweiterungen (es kann nützlich sein, besser zu beschreiben, was Sie haben)find $dir -type f -regextype posix-extended -regex ".*\.(jpg|png|<...>|cr2|raw|raf|orf)"
wo<...>
bedeutet eine Reihe anderer Suffixe.convert image.jpg - | md5sum
(ImageMagick) Ihnen die entsprechenden MD5-Summen liefern.Antworten:
jhead
bietet die Möglichkeit, Nicht-Bild-Metadaten aus JPEG-Dateien zu entfernen. Die Manpage sagt:quelle
Ich würde für die meisten Bilder mit ImageMagick gehen. Dies liegt daran, dass unterschiedliche Bibliotheksimplementierungen unterschiedliche komprimierte Ergebnisse erzeugen. ImageMagick kann eine Komprimierungsvereinigung durchführen.
Gängige Typen sind einfach, da das Betriebssystem über Bibliotheken zum Lesen und Schreiben verfügt. So:
Dadurch wird sichergestellt, dass die Bilder auf die gleiche Weise geschrieben werden. Und dann können Sie ausführen:
Für die RAW-Formate glaube ich, dass der einzige Weg darin besteht, das zu tun, was Phil sagt, und daher:
Und dann wäre die Prüfsumme dieselbe. Sie müssen nur die Daumen drücken, damit die exotischeren Bildformate mit einer einzigen Implementierung erstellt werden können (oder ein starres Dateiformat haben).
Haftungsausschluss : Dies funktioniert, um die Prüfsummen untereinander zu vergleichen. Wenn Sie die Prüfsummen speichern und dann erneut ausführen , die
-strip
nach einem Update vonzlib
oderlibjpeg
Sie können mit völlig unterschiedlichen Prüfsummen beenden. Sie müssen jedes Mal die Prüfsummen für jedes Bild erstellen. Angesichts der Bedenken hinsichtlich der Bildqualität ist es ratsam, dies nur einmal auszuführen .quelle
-quality
), sind natürlich alle Wetten deaktiviert.-strip
. Führen Sie dazuexiftool -a -G1 -s <filename>
Dateien aus, die mitmogrify -strip
und erstellt wurdenexiftool -all=
. Führen Sie zur Bestätigung den Befehl ausexiftool -a -G1 -s <original-filename> | grep JFIF
. Zukünftige Läufe des Skripts müssten dies irgendwie berücksichtigen, wenn die JFIF-Version anders wäre.Mit
imagemagick
Paket und nicht nur für JPEGs können Sie einfach:Aus dem Handbuch :
Viel mehr Infos und Vorbehalte hier .
Hinweis: Dies ähnelt @grogling, ist jedoch viel einfacher und unkomplizierter.
quelle
exiftool -all= *.jpg
JPG-Daten zu entfernen.Eine mögliche Lösung, die mir gerade in den Sinn kam. Das Problem der Metadaten wird umgangen. Es wird davon ausgegangen, dass Dateien mit dem Bild selbst enden und dass sich alle Metadaten am Anfang der Datei befinden.
Nennen wir das aktuelle Sicherungslaufwerk das Goldlaufwerk.
Für Bilder auf dem Goldlaufwerk:
Für Bilder auf den alten Laufwerken :
Klasse P enthält Bilder, die sich auf dem Gold-Laufwerk befinden, jedoch unterschiedliche Exif-Daten aufweisen oder in den führenden Bytes des Bilds Beschädigung / Datenfäule aufweisen.
Wenn Sie fertig sind, untersuchen Sie KLASSE P interaktiv und vergleichen Sie sie mit ihren Freunden auf dem Gold-Laufwerk.
Siehe EDIT # 3 to OP.
Die Zuordnung zu KLASSE U und D sollte 100% genau sein.
Die Größe von KLASSE P hängt von der Blockgröße M ab, da die ersten M + N Bytes einer Datei mit ziemlicher Sicherheit einige Bilddaten (und alle Metadaten) enthalten.
quelle
Wenn alte Laufwerke hauptsächlich Duplikate (einschließlich Metadaten) enthalten, suchen Sie in zwei Schritten nach den im OP definierten Uniques (wobei zwei Dateien als Duplikate betrachtet werden, auch wenn sie sich in den Metadaten unterscheiden):
Verwenden Sie md5sums intakter nicht entfernter Dateien, um zu ermitteln, welche Dateien auf den alten Laufwerken (in diesem alternativen Sinne) für das aktuelle Sicherungslaufwerk eindeutig sind, und weisen Sie sie entweder CLASS uU (nicht entfernt - eindeutig) oder CLASS D (upilcate) zu. KLASSE D ist 100% genau. KLASSE uU sollte klein sein (nach obiger Annahme) und eine Mischung aus echten Duplikaten (im OP-Sinn) und echten Unikaten enthalten.
Verwenden Sie md5sums und verschiedene Stripping-Techniken, um eine Methode zum Dateivergleich zu entwerfen, die für die in OP festgelegten Zwecke nützlich ist, und arbeiten Sie mit den kleinen, dh verwaltbaren Dateien in CLASS uU.
quelle
Das ist ein bisschen alt, aber ja, exiftool funktioniert sehr gut.
Metadaten von anzeigen
Metedaten für alle * .jpg-Dateien anzeigen
Hinweis: Bei der Erweiterung wird zwischen Groß- und Kleinschreibung unterschieden .
Wie oben, jedoch Unterverzeichnisse einschließen.
Entfernen Sie alle Metadaten
Entfernen Sie alle Metadaten aller * .jpg-Dateien im aktuellen Verzeichnis
Wie oben, jedoch Unterverzeichnisse einschließen.
Entfernen Sie alle GPS-Metadaten von * .jpg-Dateien im aktuellen Verzeichnis
quelle