ho scritto un app che legge i dati di base EXIF da un'immagine tramite i PropertyItems esposti in classe System.Drawing.Image di .Net. Tuttavia, non riesco a recuperare i dati EXIF specifici di Canon tramite queste proprietà. Come si legge questa informazione? So che esiste nel file, come lo legge Photoshop.C# Recupera Canon specifici dati EXIF
risposta
Non c'è nulla di integrato nel BCL che possa essere d'aiuto con EXIF.
Vedere this DOMANDA E le risposte (Qual è la migliore libreria EXIF per .Net?). Esistono diverse librerie commerciali e open source che è possibile utilizzare per ottenere dati EXIF.
Se si sta eseguendo la compilazione di v3 del Framework (o versioni successive), è possibile caricare le immagini utilizzando lo BitmapSource
class, che espone i metadati EXIF tramite Metadata
property. Ciò fornisce una connessione molto più vicina alle informazioni EXIF nelle immagini, sebbene le note del produttore siano specifiche e necessitino di ulteriore decodifica.
L'ho trovato qualche tempo fa ma non l'ho ancora usato. Sembrava che avesse informazioni specifiche del produttore.
http://renaud91.free.fr/MetaDataExtractor/
UPDATE:
Il progetto metadati-estrattore è stato vivo e vegeto a partire dal 2002 per Java, ed è ora disponibile per .NET. Ha un supporto completo per i makernote Canon e per quelli delle fotocamere e scanner Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon e Sony.
È possibile sfogliare esempio di output per diversi Canon (e altre) le immagini delle telecamere qui.
La libreria è disponibile tramite NuGet o GitHub.
utilizzo Esempio:
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}");
}
vedere una risposta aggiornata qui: C# Retrieve Canon Specific EXIF Data
Se si tratta di file RAW, si potrebbe try using dcraw.net per ottenere le informazioni fuori.
ho scritto uno strumento legale a pochi mesi fa in C# e utilizzati Phil Harvey EXIF Tool per ottenere i dati EXIF dalle fotografie. Sì, è una libreria PERL ma è stato davvero facile da installare e integrare nella mia applicazione C#.
Il progetto metadata-extractor è vivo e vegeto dal 2002 per Java ed è ora disponibile per .NET. Ha un supporto completo per i makernote Canon e per quelli delle fotocamere e scanner Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon e Sony.
È possibile sfogliare esempio di output per diversi Canon (e altre) le immagini della fotocamera here.
La libreria è disponibile tramite NuGet o GitHub.
utilizzo Esempio:
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}");
}
Si noti che la lib in Mark Redman's answer è una porta obsoleta della mia libreria Java da molti anni fa. Ora mantengo sia il progetto C# che Java per avere la parità di funzionalità.
Posso verificare che funzioni meravigliosamente! Molti produttori memorizzano la maggior parte degli utili dati Exif nel campo 'Makernote'. Questo strumento analizza tutto ciò in un simpatico dizionario XML-friendly pieno di tag Exif. – glenneroo
Questa è una porta obsoleta del mio progetto _metadata-extractor_. Ora mantengo una versione C# ufficiale che ha più funzioni e molte correzioni di bug. Vedi [la mia risposta] (http://stackoverflow.com/a/32771543/24874) per maggiori informazioni. –