Frage

Ich möchte ein kleines Programm in C# schreiben, das meine JPEG-Fotos durchgeht und sie beispielsweise in veraltete Ordner sortiert (unter Verwendung MEINER Dating-Konventionen, verdammt ...).

Kennt jemand eine relativ einfache Möglichkeit, programmgesteuert an EXIF-Daten wie Datum und Uhrzeit oder Belichtung zu gelangen?Danke!

War es hilfreich?

Lösung

Schauen Sie sich diese Metadaten-Extraktor . Es ist in Java geschrieben, aber auch in C # portiert. Ich habe die Java-Version verwendet, um ein kleines Programm zu schreiben, meine JPEG-Dateien basierend auf dem Zeitpunkt und Modell-Tags umbenannt. Sehr einfach zu bedienen.


Bearbeiten Metadaten-Extraktor unterstützt zu .NET. Es ist eine sehr schnelle und einfache Bibliothek für Metadaten von Bildern und Videos zugreifen.

Es unterstützt Exif sowie IPTC, XMP und viele andere Arten von Metadaten aus Dateitypen wie JPEG, PNG, GIF, PNG, ICO, WebP, PSD, ...

var directories = ImageMetadataReader.ReadMetadata(imagePath);

// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

// access the date time
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);

Es ist erhältlich über NuGet und die Code ist auf GitHub .

Andere Tipps

Wie vorgeschlagen, können Sie eine Bibliothek eines Drittanbieters verwenden oder dies manuell tun (was nicht so viel Arbeit bedeutet), aber am einfachsten und flexibelsten ist es vielleicht, die integrierte Funktionalität in .NET zu verwenden.Weitere Informationen finden Sie unter:

Ich sage „es ist am flexibelsten“, weil .NET nicht versucht, die Daten in irgendeiner Weise zu interpretieren oder zusammenzuführen.Für jedes EXIF ​​erhalten Sie grundsätzlich ein Array von Bytes.Das kann gut oder schlecht sein, je nachdem, wie viel Kontrolle Sie tatsächlich wünschen.

Außerdem sollte ich darauf hinweisen, dass die Eigenschaftsliste tatsächlich nicht direkt den EXIF-Werten entspricht.EXIF selbst wird in mehreren Tabellen mit überlappenden IDs gespeichert, aber .NET fasst alles in einer Liste zusammen und definiert die IDs einiger Elemente neu.Aber solange Ihnen die genauen EXIF-IDs egal sind, sollte die .NET-Zuordnung kein Problem sein.

Hier ist ein Link zu einem anderen ähnliche Frage SO , das hat zu diesem guten Artikel eine Antwort zeigt auf "Lesen, Schreiben und Foto-Metadaten" in .Net.

Sie können mit TagLib # , die durch Anwendungen wie F-Spot . Neben Exif, wird es eine gute Menge an Metadatenformaten für Bild-, Audio- und Video lesen.

Ich mag auch ExifUtils API, aber es ist fehlerhaft und wird nicht aktiv entwickelt.

Bild Klasse Property und PropertyIdList Eigenschaften. Sie können sie benutzen.

Das Abrufen von EXIF-Daten aus einem JPEG-Bild umfasst Folgendes:

  1. Suchen Sie nach den JPEG-Markierungen, die den Anfang der EXIF-Daten angeben.z.B.Normalerweise ist oxFFE1 die Markierung, die beim Kodieren von EXIF-Daten eingefügt wird. Dabei handelt es sich um ein APPlication-Segment, in das EXIF-Daten eingefügt werden.
  2. Analysieren Sie alle Daten von beispielsweise 0xFFE1 bis 0xFFE2.Bei diesen Daten handelt es sich um einen Bytestrom in der JPEG-kodierten Datei.
  3. Das ASCII-Äquivalent dieser Bytes würde verschiedene Informationen zu Bilddatum, Kameramodellname, Belichtung usw. enthalten.

Das Kommandozeilen-Tool ExifTool von Phil Harvey mit Dutzenden von Werken Bildformate - darunter viele proprietäre RAW-Formate -. und können eine Vielzahl von Metadatenformate einschließlich EXIF, GPS, IPTC, XMP, JFIF manipulieren

Sehr einfach zu bedienen, leicht, beeindruckende Anwendung.

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