2010-04-25 7 views
5

J'ai écrit une application qui lit les données EXIF ​​de base d'une image via les PropertyItems exposés dans la classe System.Drawing.Image de .Net. Cependant, je ne peux pas récupérer les données EXIF ​​spécifiques à Canon via ces propriétés. Comment lit-on cette information? Je sais qu'il existe dans le fichier, comme Photoshop le lit.C# Récupérer des données EXIF ​​spécifiques à Canon

Répondre

1

Il n'y a rien de construit dans le BCL qui aidera avec EXIF.

Regardez this SO question et les réponses (Quelle est la meilleure bibliothèque EXIF ​​pour .Net?). Il existe plusieurs bibliothèques commerciales et open source que vous pouvez utiliser pour obtenir des données EXIF.

2

Si vous compilez sur la version 3 du Framework (ou plus tard), vous pouvez charger les images en utilisant le BitmapSource class, qui expose les métadonnées EXIF ​​via le Metadata property. Cela donne une connexion beaucoup plus proche aux informations EXIF ​​dans les images, bien que les notes du fabricant soient spécifiques et nécessitent un décodage supplémentaire.

3

Je l'ai trouvé il y a un certain temps mais je ne l'ai pas encore utilisé. Il semblait qu'il avait des informations spécifiques au fabricant.

http://renaud91.free.fr/MetaDataExtractor/

MISE À JOUR:

Le projet métadonnées extracteur a été bel et bien vivant depuis 2002 pour Java, et est maintenant disponible pour .NET. Il offre un support complet pour les makernotes de Canon ainsi que pour les caméras et scanners Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon et Sony.

Vous pouvez parcourir l'exemple de sortie de plusieurs images de caméra Canon (et autres) ici.

La bibliothèque est disponible via NuGet ou GitHub.

Exemple d'utilisation:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path); 

foreach (var directory in directories) 
foreach (var tag in directory.Tags) 
{ 
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}"); 
} 

voir une réponse mise à jour ici: C# Retrieve Canon Specific EXIF Data

+1

Je peux vérifier que cela fonctionne à merveille! De nombreux fabricants stockent la plupart des données utiles d'Exif dans le champ «Makernote». Cet outil analyse tout cela dans un petit dictionnaire sympathique XML plein de balises Exif. – glenneroo

+0

Ceci est un port obsolète de mon projet _metadata-extractor_. Je maintiens maintenant une version officielle de C# qui a plus de fonctionnalités et de nombreuses corrections de bugs. Voir [ma réponse] (http://stackoverflow.com/a/32771543/24874) pour plus d'informations. –

0

J'ai écrit un outil médico-légal il y a quelques mois en C# et j'ai utilisé le EXIF Tool de Phil Harvey pour obtenir les données EXIF ​​à partir de photographies. Oui, c'est une bibliothèque PERL mais c'était vraiment facile à installer et à intégrer dans mon application C#.

1

Le projet d'extraction de métadonnées a été actif depuis 2002 pour Java et est maintenant disponible pour .NET. Il offre un support complet pour les makernotes de Canon ainsi que pour les caméras et scanners Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon et Sony.

Vous pouvez parcourir l'exemple de sortie de plusieurs images de caméra Canon (et autres) here. La bibliothèque est disponible via NuGet ou GitHub.

Exemple d'utilisation:

IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path); 

foreach (var directory in directories) 
foreach (var tag in directory.Tags) 
{ 
    Console.Out.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}"); 
} 

Notez que le répertoire lib dans Mark Redman's answer est un port obsolète de ma bibliothèque Java il y a plusieurs années. Je maintiens maintenant les deux projets C# et Java pour avoir la parité des fonctionnalités.

Questions connexes