Ich schreibe eine Anwendung, die Metadaten für ein Bild liest/schreibt (es konvertiert eine Rohdatei in ein JPEG/TIFF), und ich muss Metadaten über Kamera/Modus/... in das generierte JPEG schreiben.
Ich weiß, dass ich dies mit Exif tun kann und in Windows verwende ich GDI, um dies zu tun. Aber ich lese Informationen über xmp und xmp sdk von Adobe.
Ich frage mich, welches soll ich verwenden? exif oder xmp?
Wie stehen sie zueinander?
Warum kann man wählen, Exif-Metadaten zu schreiben, und jemand anderes kann XMP wählen? Was sind die Vor- und Nachteile der Auswahl einer von ihnen?
Ich schreibe in C++ unter Windows (Visual Studio 2012)
Wenn Sie Standard-Metadatenfelder wie Kamerainformationen speichern, wäre es wahrscheinlich am einfachsten, sich an die gut definierten Feldnamen und -typen von EXIF zu halten. Dies kann eine bessere Kompatibilität mit anderen Anwendungen bedeuten, die XMP möglicherweise nicht so gut unterstützen.
Ihre andere Möglichkeit besteht darin, einfach beide zu verwenden, da sie in derselben Datei koexistieren können.
Es sind unterschiedliche Formate. XMP ist ein XML-basiertes Format, das selbsterklärender ist, da EXIF erfordert, das Format der Datei zu kennen, um zu wissen, welcher Wert an jedem Offset ist. EXIF ist begrenzter in dem, was es speichern kann (zumindest kann es allgemein erkannt werden), ist aber auch kleiner, da es keine Deskriptoren der Felder benötigt, die in die Datei aufgenommen werden sollen. XMP hingegen benötigt mehr Platz, kann aber beliebige Werte definieren, da es Felddeskriptoren im Format enthält.
James Schnel