Frage

Ich Stelle zusammen ein Skript zu finden, entfernen Sie Duplikate in einer große Bibliothek von Bildern.Im moment mache ich eine zwei-pass-filter, der zunächst die Suche nach Dateien mit der gleichen Größe, und dann tut eine sha256-auf einem 10240 byte-Stück der Datei erhalten einen Fingerabdruck der Dateien mit der gleichen Größe (code hier).

Es funktioniert gut, aber ich vermute, es gibt wahrscheinlich Prüfsummen gebaut, um das jpeg-format, das ich verwenden könnte, anstatt die sha256.

Weiß jemand, ob es sind Prüfsummen oder anderen Komponenten,, dass könnte als Prüfsummen / Fingerabdrücke?Wenn ja, gibt es eine effiziente Möglichkeit, darauf zuzugreifen?

War es hilfreich?

Lösung

Das glaube ich nicht die JPEG-Spezifikation jede Art von Prüfsumme in der Art und Weise umfasst die Sie beschreiben.

Eine JPEG kann eine Miniaturansicht als Teil ihrer EXIF-Metadaten enthalten, though. Es ist kein perfekter Indikator, da es möglich ist, für zwei verschiedene Bilder die gleiche Miniatur haben. Es gibt mindestens einen dokumentierten Fall eine Miniaturansicht nicht ersetzt werden, nachdem das Bild wesentliche Änderungen erfahren hatte, sagte Thumbnail viel mehr enthüllt als der Verlag beabsichtigt hatte.

Andere Tipps

Es ist schon eine Weile her, seit ich in die Bibliothek IJG gegraben habe, aber ich glaube nicht, gibt es ein einfaches Klassenmitglied oder Funktion aufrufen Sie es verwenden können, für irgendeine Art von Fingerabdruck zu überprüfen. Sie könnten die in EXIF-Tags gebaut verwenden, wenn Sie die Codierung der Bilder steuern können ...

Ich bin gebaut nur ein sehr ähnliches Skript. Ich will nicht zu Prüfsumme Metadaten Ich möchte sehen, ob die tatsächlichen Bilder sind Duplikate auch wenn Tags geändert wurden. Am besten für das nicht nach Größe zu sortieren, aber tun sortierte nach der Prüfsumme istelf. Ich benutze jhead Metadaten zu entfernen und dann Prüfsumme die gesamte Datei (aber ich dachte auch über nur einen Teil davon zu tun, aber eigentlich habe ich nicht denke, es spart viel Zeit). jhead verwendet nicht gemeinsam genutzten Speicher (Rohre) und überschreibt so dass ich nur die Datei zunächst auf gemeinsam genutzten Speicher kopieren. Ich stelle die Prüfsumme im Imagedescription Feld für später schneller abgerufen werden können. Offensichtlich ist dies erlaubt auch später die Bildintegrität zu überprüfen und ist Teil des Grundes, warum ich Prüfsumme das Ganze. Tipp: exiv2 ist viel schneller zum Lesen und die Metadaten als exiftool für einen zu einem Zeitpunkt entschieden, Manipulation zu schreiben.

Die im JPEG-standard(ITU-T. 81) ich glaube, es ist nicht jede Feld - /syntax-element, wenn Sie eine Prüfsumme oder solche, für die ganze komprimiertes jpeg-Bild-Datei.Es sei denn, eine maßgeschneiderte Anwendung stellt eine solche Klage in der Anwendung-segment oder als meta-Daten für die Segmente sind im standard vorgesehen.So dienen Ihren Zweck, was Sie tun, ist eine soln.Anderen könnte eine Art eine wrapper-Anwendung, die eine binäre Datei vergleichen utlitiy (wie beyond compare, oder sogar ein windows-Befehl fc /b), und überprüfen Sie das Ergebnis vergleichen Dienstprogramm und nehmen Sie die Entscheidung, die u wollen.

-AD

Eine Möglichkeit, die Sie durchführen können, ist alle Bilder zu einer festen Größe zu reduzieren und speichern, dass als Miniaturansicht. Dann wird die Bildvergleich vergleichen würde ähnlich große Bilder und geben Ihnen eine Chance, ein Duplikat -. Nützlich, wenn Sie abgeschnitten haben (es sei denn, abgeschnitten stark) oder Bilder der Größe verändert und wollen, dass diese ‚Duplikate‘ finden

In der XMP-Spezifikation gibt es Dokument-ID und die Versionsnummer, die die Version des Bildes eindeutig identifizieren sollte.

Das Problem mit diesen (und mit jedem anderen Metadaten-basierte Identifizierungsverfahren) ist, dass es nicht von einigen Anwendungen eingehalten werden könnten, die den Inhalt des JPEG-Metadaten ändern Aktualisierung entsprechend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top