Lesen von Daten-Metadaten von JPEG -, XMP-oder EXIF-in C#
Ich habe auf der Suche um für eine menschenwürdige Art des Lesens Metadaten (speziell das Datum) von JPEG-Dateien in C# und komme ein wenig kurz. Die vorhandenen Informationen so weit wie ich sehen kann, zeigt einen code wie den folgenden;
BitmapMetadata bmd = (BitmapMetadata)frame.Metadata;
string a1 = (string)bmd.GetQuery("/app1/ifd/exif:{uint=36867}");
Aber in meiner Unwissenheit habe ich keine Ahnung, was wenig Metadaten GetQuery() zurück, oder was, um es zu übergeben.
Möchte ich versuchen, das Lesen von XMP-zunächst einen Rückgriff auf die EXIF-wenn XMP nicht vorhanden. Gibt es eine einfache Möglichkeit, dies zu tun?
Dank.
InformationsquelleAutor tsvallender | 2010-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgendes scheint zu funktionieren gut, aber wenn es etwas schlechtes über es, ich würde schätzen alle Kommentare.
Wer bei Microsoft umgesetzt
BitmapMetaData.DateTaken
ist eine PERFEKTE IDIOT! 1. Warum ist esstring
überhaupt? Letzte Zeile inget
istDateTime.ToString()
und erste Zeile inset
istConvert.ToDateTime()
. und 2.:get
gibt kulturspezifische string-und dieset
erwartet Kultur-insensitive string. GIBT ES EINE QUALITÄTSSICHERUNG BEI MICROSOFT ÜBERHAUPT???eigentlich bist du ein bisschen unfair. In den Exif-Daten, Daten werden als Zeichenfolgen dargestellt. Einige Kameras verwenden unterschiedliche Formate für andere, so gibt es keine Garantie, dass MS das jemals schreiben code, um erfolgreich analysieren jedes Datum Zeichenkette, auf die es trifft. Zumindest geht es den raw-string zusammen, so dass Sie Debuggen können, was Los ist.
Ich weiß nicht, ob
BitmapMetadata
bietet GPS-Daten, aber Sie können leicht mit "meine Bibliothek" zu tun, wenn Sie möchten.sollten Sie entsorgen die
FileStream
Objekt.InformationsquelleAutor tsvallender
Habe ich portiert meiner langjährigen open-source-Java-Bibliothek .NET vor kurzem, und es unterstützt XMP, Exif, ICC, JFIF und viele weitere Arten von Metadaten über eine Reihe von Bild-Formaten. Es wird auf jeden Fall das erreichen, was Sie wollen.
https://github.com/drewnoakes/metadata-extractor-dotnet
Diese Bibliothek unterstützt auch XMP-Daten, die über eine C# Portierung von Adobe XmpCore-Bibliothek für Java.
https://github.com/drewnoakes/xmp-core-dotnet
string dateTime = subIfdDirectory?.GetDescription(ExifDirectoryBase.TagDateTimeOriginal);
Oder Sie können diese verwenden, um es in DateTime? ObjektDateTime? dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTimeOriginal);
kann das Ding Griff Picassa Region/Face-Daten drew? Ich kann bestätigen, dass seine Bibliothek funktioniert in der Tat gut für die Grundlagen, die Sie anfordern hier.
es ist schon eine Weile her, seit ich verwendet, Picasa, aber ich glaube, es speichert die Metadaten in einer eigenen Datenbank oder in sidecar-Dateien. MetadatExtractor haben noch nicht alle Unterstützung für die "sidecar" - Dateien, wenn ich akzeptieren würde, einen pull-request, wenn die Umsetzung war anständig.
Hi drew. Ich verwendete eine variation des brutalXmp unten und nur Riss es heraus Großhandel. (man kann speichern Sie die Daten in die jpgs Optional, es ist in den Optionen, und schreiben Sie vorher extern gespeicherten Daten in die Dateien - ebenfalls in den Optionen) ich schob die Ergebnisse zum nachlesen (und die nächste Arme Seele, die Tage verbringt Sie heraus, wie Sie dies tun, ohne die Bibliothek zu unterstützen. Yup, Unity3d) VERWEIS: gist.github.com/twobob/ea6cb3b7c7d83c1b62513bcd67c0d39c
Tatsächlich , diese Frage stackoverflow.com/questions/23595560/... auch sollte man gehen wollen, werden die meta extractor route ist mir jetzt klar
InformationsquelleAutor Drew Noakes
Ich denke, was du tust, ist eine gute Lösung, weil das System.DateTaken handler automatisch gilt Foto-Metadaten-policy fallen zurück auf andere namespaces zu finden, wenn ein Wert vorhanden ist.
EDIT:
Aktualisierte link - http://msdn.microsoft.com/en-us/library/windows/desktop/ee872003(v=vs. 85).aspx
InformationsquelleAutor muruge
Wenn Sie kämpfen mit XMP-jn jpeg, das funktioniert. Nennt man das nicht brutal für nichts!
GetElementsByTagName("rdf:Description")
und etwas Sorgfalt kann man extrahieren Picassa3 Gesicht Region, Daten mit diesem. Top-job.InformationsquelleAutor bbsimonbb
Meine Unternehmen macht .NET toolkit, die mit XMP-und EXIF-Parser.
Den typischen Prozess ist so etwas wie dieses:
für EXIF-würden Sie dies tun:
offensichtlich, frameIndex wäre 0 für JPEG.
Es sind freie und open-source-alternativen.
InformationsquelleAutor plinth