XMP Daten aus JPEG extrahieren

Da ich in meiner Gallerie Metadaten wie GPS-Koordinaten und Schlagwörter benötige hab ich mich die letzten Tage mal mit dem extrahieren von solchen daten aus dem JPEG-Format beschäfftigt.

Zuerst bin ich bei der SourceForge fündig geworden. Dort gibt es mehrere Libs zu auswahl. Die haben meistens nur ein Problem.  Entweder sie nutzen .NET WPF funktionen oder extrahieren reine EXIF-Tags.

Nachdem ich mehrere Stunden vergeblcih versucht hab mit normalen „Boardmitteln“, „BitSchubserei“ und anderer wiedrigkeiten an diese Daten zu kommen, hab ich mal den guten alten HexEditor ausgegraben. Eine Suche nach meinen benutzten Schlagwörtern brachte schnell hervor, dass die meisten Bildverarbeitungsprogramme die Tag-Daten zwei mal speichern. Einmal in den EXIF Tags und einmal im IPTC/XMP/IIM Format. Von letzterem hab ich vorher viel gelesen und Definition gefunden. Exif leider weniger…

Das Problem war, dass ich nicht wusste wo diese Daten hinterlegt waren und wie.  Der Hex-Editor brachte die denkbar  einfachste Methode zum vorschein. XMP ist in reinem XML gespeichert und dieses wird hübsch im Klartext in die Datei geschrieben. Einfach die ganze Datei einlesen, Start und End-Tag suchen, zurechtschneiden, parsen und schon hat man einen sehr angenehmen Weg sämmtliche hinterlegten Daten abzufragen.

Nachdem ich meinen „Weg“ validieren wollte fand ich dann auch einige Codebeispiele dazu. Hier das verständlichste:  Shahine.com –  Reading XMP Metadata from a JPEG using C#