Frage

Gibt es end-of-exif / end-of-XMP / end-of-IPTC / Start-of-Datenmarkierungen, dass ich verwenden, um eine Prüfsumme von nur den Datenteil eines jpg / jpeg (und andere bekommen könnte Bildformate)?

War es hilfreich?

Lösung 6

MediaTags hat Prüfsumme Unterstützung für JPEG, MP3, M4A, etc.

Andere Tipps

Ich denke, diese Frage zu diesem verwandt ist Compute Hash nur des Kernbilddaten (mit Ausnahme von Metadaten) für ein Bild , https: // stackoverflow.com/a/10075170/890106 gibt ein Element der Antwort, wenn Sie für Code suchen.

Es könnte funktioniert nicht mit allen JPG-Varianten aber: einige von ihnen mehrere Bilder einbetten können (MPF / CIPA Multi-Picture-Format, weitere Informationen unter http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/MPF.html ) und Sie vielleicht noch einige Metadaten haben. Außerdem setzte einig Software eine UID in Form von - [0-9A-F] + - am Ende der Datei und es sollte nicht gelesen werden. Sicherste Lösung, wenn wahrscheinlich Prüfsumme Pixel (obwohl Sie noch Einfluss der Orientierung, Farbprofil haben, ..).

Eine einfache Möglichkeit, eine Hash-Summe von nur die Pixeldaten zu erhalten wäre, die JPEG in eine 32Bit BMP umwandeln oder alternativ in PNG und eine Hashsummen aus, dass zu berechnen. Dadurch werden alle zugehörigen Informationen aus den JPEGs Streifen und auch JPEGs mit differnt Codierungen, dass führen zu den gleichen Pixeldaten entsprechen würde. Sie könnten natürlich auch die im Speicher verwenden Pixeldaten des resultierenden BMPs direkt, wenn Sie es haben (das heißt von Windows mehr API-Funktionen hat es von jedem unterstützten Bildtyp zu bekommen).

Ja, um JPEG- und EXIF, ich weiß nicht, zu den anderen.

Die JPEG-Spezifikation, dass ich habe, ist JFIF (JPEG File Interchange Format) genannt es stammt aus Anhang B der ISO 10918-1 und wie alle ISO-Spezifikationen, dauert es sorgfältiges Lesen, um herauszufinden, wie die Spezifikation in Datenstrukturen zu übersetzen. Ich denke, diese viel einfacher zu folgen

das EXIF-Format analysiert ähnlich wie das TIFF-Format. Jeder Block hat eine Art und eine Größe, so dass Sie nur die Stücke gehen, bis Sie auf den Bilddatenblock erhalten. es hat einen Zeiger auf die Bilddaten (eigentlich Zeiger auf Streifen, aber ich bin mir ziemlich sicher, dass Sie das alles annehmen kann, nachdem der erste Streifen von Bilddaten an das Ende der Datei Bilddaten ist.

Das EXIF-Format hat seine eigene Website

Sie werden in jedem Format zu suchen. Für JPEG, sieht es aus wie der Struktur , dass Sie nur eine Prüfsumme der tun kann, bedeutet, Abschnitte, die mit FFEn (zB 0xFFE1) beginnen und Prüfsumme der nach jeder Markierung angegebenen Bytes (Es sieht aus wie die Länge der Markierung folgt und 2 Bytes in big-endian-Format). Weitere Details finden Sie unter hier .

Da Sie dies für verschiedene Bildformate tun wollen, sollten Sie nur eine Allzweck- Bilddekomprimierung Bibliothek verwenden und Ihre Prüfsumme auf den unkomprimierten Daten laufen. Dies ermöglicht es Ihnen identische Bilder auch passend, wenn sie anders auf der Festplatte verschlüsselt werden.

Wenn Sie sich selbst zu JPEG beschränken möchten, können Sie die Daten zwischen SOI und EOI-Prüfsumme. Diese Antwort leicht angepasst werden kann, zu tun, was Sie brauchen.

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