[BEARBEITUNG #1 von OP:Es stellte sich heraus, dass diese Frage vom Erfinder und Betreuer von Exiftool, Phil Harvey, recht gut beantwortet wurde in einemdoppelter Thread im ExifTool-Forum]
[EDIT #2 von OP:AusHäufig gestellte Fragen zu ExifTool:ExifTool istnichtgarantiert das vollständige Entfernen der Metadaten aus einer Datei beim Versuch, alle Metadaten zu löschen.Siehe „Writer-Einschränkungen“.]
Ich möchte meine alten Festplatten nach Fotos durchsuchen, die sich nicht auf meinem aktuellen Backup-Laufwerk befinden. Zu den Formaten gehören JPG, PNG, TIF usw. sowie verschiedene RAW-Formate (verschiedene Kameramodelle und Hersteller).
Mich interessiert nur die Einzigartigkeit des Bildes selbst und nicht die Einzigartigkeit aufgrund von Unterschieden beispielsweise in den Werten der Exif-Tags, dem Vorhandensein/Fehlen eines bestimmten Exif-Tags selbst, eingebetteten Miniaturansichten usw. …
Auch wenn ich nicht damit rechne, zwischen verschiedenen Kopien ansonsten identischer Bilder Beschädigungen/Datenverluste zu finden, möchte ich diese sowie durch Größen- und Farbänderungen bedingte Unterschiede erkennen.
[Bearbeitung Nr. 3 von OP:Zur Klarstellung: Ein kleiner Prozentsatz an falsch-positiven Ergebnissen ist tolerierbar (eine Datei wird als eindeutig angesehen, obwohl dies nicht der Fall ist) und falsch-negative Ergebnisse sind höchst unerwünscht (eine Datei wird fälschlicherweise als Duplikat angesehen).]
Mein Plan besteht darin, die Eindeutigkeit anhand von MD5-Summen zu ermitteln, nachdem sämtliche Metadaten entfernt wurden.
Wie kann ich die Metadaten entfernen?
Wird exiftool -all= <filename>
genügen?
Antwort1
Mitimagemagick
Paket undnicht nur für JPEGsSie können einfach:
mogrify -strip ./*.jpg
Dies ./
dient dazu, Probleme mit Dateinamen zu vermeiden, die mit "-" beginnen.
AusHandbuch:
-strip
Entfernen Sie alle Profile, Kommentare oder diese PNG-Stücke aus dem Bild: bKGD, cHRM, EXIF, gAMA, iCCP, iTXt, sRGB, tEXt, zCCP, zTXt, date.
VielWeitere Informationen und VorbehalteHier.
Dies ist ähnlich wie @grochmal, aber viel direkter und einfacher.
Antwort2
jhead
hat die Fähigkeit, Nicht-Bild-Metadaten aus JPEG-Dateien zu entfernen. Die Manpage sagt:
-dc
Kommentarfeld aus dem JPEG-Header löschen. Beachten Sie, dass der Kommentar nicht Teil des Exif-Headers ist.
-de
Löscht den Exif-Header vollständig. Lässt andere Metadatenabschnitte intakt.
-di
Löscht den IPTC-Abschnitt, falls vorhanden. Lässt andere Metadatenabschnitte intakt.
-dx
Löscht den XMP-Abschnitt, falls vorhanden. Lässt andere Metadatenabschnitte intakt.
-du
Löschen Sie JPEG-Abschnitte, die keine Exif- oder Kommentarabschnitte sind und auch sonst nichts zum Bild beitragen – beispielsweise Daten, die Photoshop möglicherweise im Bild belässt.
-purejpg
Löscht alle JPEG-Abschnitte, die für die Bilddarstellung nicht erforderlich sind. Entfernt alle Metadaten, die verschiedene Anwendungen möglicherweise im Bild hinterlassen haben. Eine Kombination der Optionen
-de
-dc
und .-du
Antwort3
Das ist zwar etwas alt, aber ja, Exiftool funktioniert sehr gut.
Zeige Metadaten von
exiftool photo.jpg
Metadaten für alle *.jpg-Dateien anzeigen
Hinweis: Die Erweiterung istGroß-/Kleinschreibung beachten.
exiftool -ext jpg
Wie oben, aber mit Einbeziehung von Unterverzeichnissen.
exiftool -r -ext jpg .
Entfernen Sie alle Metadaten
exiftool -all= -overwrite_original photo.jpg
Entfernt alle Metadaten aller *.jpg-Dateien im aktuellen Verzeichnis
exiftool -all= -overwrite_original -ext jpg
Wie oben, aber mit Einbeziehung von Unterverzeichnissen.
exiftool -all= -r -overwrite_original -ext jpg .
Entfernen Sie alle GPS-Metadaten von *.jpg-Dateien im aktuellen Verzeichnis
exiftool -gps:all= *.jpg
Antwort4
Anstelle von MD5 verwenden Sie ImageMagick identify
zum Drucken derUnterschriftvon Bilddateien. Suchen Sie nach Dateien mit derselben Signatur. Dateien mit derselben Signatur haben denselben Inhalt.
Beispielsweise sind die Dateien a.png
, b.png
, und c.png
unterschiedlich, da sie unterschiedliche MD5-Prüfsummen haben:
$ md5sum *
a9ee60d8237a4b3f6cdd6e57c24b1caf a.png
e8661c4fd7761984a74945e273fd4d09 b.png
21c808d62ff9c7675c1f9ca20d2f6578 c.png
Sie haben jedoch eine gemeinsame Signatur:
$ identify -format "%# %f\n" *
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 a.png
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 b.png
1c916332636b91704f212eec504c25383c90ed5d1659975a4a5895c48fe80ab8 c.png
Daher handelt es sich um Duplikate.