Zwei Bilddateien auf identische Daten vergleichen - ohne Metadaten?

Ich habe viele Fotos aus dem Internet, denen ich GPS-Exif-Daten hinzufügen möchte, aber ich verlasse mich darauf, Duplikate mit Vergleichstools wie cmp, md5sumund zu entfernen duff.

Wenn ich die Exif-Daten bearbeite, werden keine mir bekannten Tools doppelte Bilder erkennen. Ich suche nach einem Tool (oder einem zuverlässigen 1-Zeilen-Pipeline-Befehl), das entweder:

  • (bevorzugt) Generieren Sie einen Digest, der nur auf dem Hauptteil und nicht auf Metadaten basiert
  • Melden Sie 2 Bilder als Pixel für Pixel identisch

Gibt es ein solches Tool? (Oder gibt es einen Artikel, der näher darauf eingeht, warum es sich nicht lohnt, dieses Problem zu lösen?)

Weitere Informationen

Der Grund, warum ich einen Digest gegenüber einer Blackbox-Duplikatprüfung bevorzuge, ist, dass ich gerne flache .txtDateien als Datenbank mit anderen interessanten Informationen über Bilder erstelle (z. B. das Ranking von Bildern).

Genau genommen handelt es sich bei EXIF-Daten um Metadaten und nicht um Header, da sie möglicherweise an anderen Stellen als am Anfang der Datei auftreten können.
Danke, ich werde die Wortüberschrift aus dem Beitrag entfernen

Antworten (2)

Sie können exiftool verwenden, um alle Metadaten zu entfernen und das, was übrig bleibt, dh das Bild standardmäßig im Binärformat auszugeben, mit dem Befehl:

exiftool filename.jpg  -all= -o - -b

Und natürlich md5sumwird Standard in als Eingabe ausgenommen, also sollten Sie in der Lage sein, eine Pipe zu konstruieren wie:

exiftool filename.jpg  -all= -o - -b | md5sum -
Beachten Sie, dass das Obige die Datei nicht ändert , die Datei wird gelesen, Metadaten entfernt und dann die Bilddaten in md5sum ausgegeben! Sie verwenden sys::stdout statt /temp/
Oh warte, ich habe nicht richtig gelesen. Wenn es sdtin verwendet, wird es keinen dauerhaften Schaden geben
Wenn ich darüber nachdenke, entferne ich beim Entfernen doppelter Dateien möglicherweise die wünschenswertere Variante der Datei. Vielleicht möchten Sie, anstatt einen von ihnen zu löschen, die Exif-Daten so zusammenführen, dass die Ausgabe von md5sum identisch wird
Sie müssen die EXIF-Daten nur zusammenführen, wenn die Dateien ansonsten identisch sind, also besteht Ihr erster Schritt darin, alle Duplikate zu finden (ohne die EXIF-Daten), dann können Sie möglicherweise exiftool verwenden, um alle Metadaten aus beiden Dateien zu extrahieren, zusammenzuführen und festzulegen eine oder beide Dateien, die es enthalten - dies wird kein Einzeiler sein.
Ja, ein Einzeiler ist unrealistisch, nachdem man das gründlicher durchdacht hat. Es wäre eher ein Shell-Skript oder ein grooviges Skript, wenn ich es zuverlässig machen möchte
Persönlich würde ich ein Python-Skript verwenden, aber das bin nur ich!
Ja. Leider gehört Python nicht zu meinen Fähigkeiten. Ich bin ein Java-Typ :)

Aus irgendeinem Grund hat exiftool bei mir nicht funktioniert, da es anscheinend einige Metadaten hinterlassen hat, aber das Ersetzen durch imagemagick convert hat hervorragend funktioniert:

convert -strip filename.jpg -| md5sum