Comment obtenir les données EXIF à partir d'un fichier en utilisant C# [fermé]

je voudrais écrire un petit programme en C# qui passe en revue mes photos jpeg et, par exemple, les trie dans des dossiers datés (en utilisant mes conventions de datation, dammit...).

est-ce que quelqu'un connaît un moyen relativement facile d'obtenir les données EXIF telles que la Date et L'heure ou L'exposition programmatically? Merci!

64
demandé sur Joel in Gö 2008-09-12 14:43:49

7 réponses

Regardez ce extracteur de métadonnées . il est écrit en Java mais a aussi été porté en C#. j'ai utilisé la version Java pour écrire un petit utilitaire pour renommer mes fichiers jpeg sur la base des étiquettes date et model. Très facile à utiliser.


éditer metadata-extractor supporte aussi .NET. C'est une bibliothèque très simple et rapide pour accéder aux métadonnées à partir d'images et de vidéos.

il prend entièrement en charge Exif, ainsi que IPTC, XMP et de nombreux autres types de métadonnées de types de fichiers, y compris 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);

il est disponible via NuGet et le code sur GitHub .

12
répondu Dave Griffiths 2016-10-03 21:20:49

comme suggéré, vous pouvez utiliser une bibliothèque tierce, ou le faire manuellement (ce qui n'est pas beaucoup de travail), mais le plus simple et le plus flexible est peut-être d'utiliser la fonctionnalité intégrée dans .NET. Pour plus de détails voir:

je dis" c'est le plus flexible " parce que .NET n'essaie pas d'interpréter ou de fusionner les données de quelque manière que ce soit. Pour chaque EXIF vous obtenez essentiellement un tableau d'octets. Cela peut être bon ou mauvais selon le niveau de contrôle que vous voulez vraiment.

en outre, je dois signaler que la liste de propriété ne correspond pas en fait directement aux valeurs EXIF. EXIF elle-même est stockée dans plusieurs tables avec des ID qui se chevauchent, mais .NET met tout dans une liste et redéfinit les ID de certains éléments. Mais aussi longtemps que vous ne vous souciez pas de la précision des expressions, vous devriez être d'accord avec la cartographie.net.

42
répondu Jan Zich 2009-08-12 21:34:19

voici un lien vers une autre question SO similaire , qui a une réponse pointant vers ce bon article sur " metadata de lecture, d'écriture et de photo " in .Net.

9
répondu Joel in Gö 2017-05-23 11:54:51

vous pouvez utiliser TagLib# qui est utilisé par des applications telles que F-Spot . Outre Exif, il lira une bonne quantité de formats de métadonnées pour l'image, l'audio et la vidéo.

I also like ExifUtils API mais il est buggy et n'est pas activement développé.

6
répondu smola 2011-10-25 09:21:19

la classe D'Image a PropertyItems et PropertyIdList propriétés. Vous pouvez les utiliser.

5
répondu idursun 2008-09-12 10:53:06

L'outil de ligne de commande ExifTool par Phil Harvey fonctionne avec des dizaines d'images de formats, y compris beaucoup de formats RAW propriétaires - et peut manipuler une variété de formats de métadonnées, y compris EXIF, GPS, IPTC, XMP, JFIF.

très facile à utiliser, léger, application impressionnante.

3
répondu Kirk Broadhurst 2012-02-03 02:43:06

obtenir des données EXIF à partir D'une image JPEG implique:

  1. cherche les marqueurs JPEG qui mentionnent le début des données EXIF,. par exemple, normalement oxFFE1 est le marqueur inséré lors de l'encodage des données EXIF, qui est un segment D'APPlication, où les données EXIF vont.
  2. analyse Toutes les données de say 0xFFE1 à 0xFFE2 . Ces données seraient un flux d'octets, dans le fichier encodé JPEG.
  3. équivalent ASCII de ces octets contiendrait divers renseignements relatifs à la Date de L'Image, au nom du modèle de caméra, à L'exposition, etc...
3
répondu goldenmean 2013-04-21 12:45:05