2010-04-25 52 views
5

He escrito una aplicación que lee los datos básicos EXIF ​​de una imagen a través de los PropertyItems expuestos en clase System.Drawing.Image de .Net. Sin embargo, no puedo recuperar datos EXIF ​​específicos de Canon a través de estas propiedades. ¿Cómo se lee esta información? Sé que existe en el archivo, ya que Photoshop lo lee.C# Recuperar Canon específico Datos EXIF ​​

Respuesta

1

No hay nada incorporado en el BCL que ayude con EXIF.

Mira this SO pregunta y las respuestas (¿Cuál es la mejor biblioteca EXIF ​​para .Net?). Hay varias bibliotecas comerciales y de código abierto que puede usar para obtener datos EXIF.

2

Si está compilando contra v3 del Framework (o posterior), puede cargar las imágenes usando BitmapSource class, que expone los metadatos EXIF ​​a través del Metadata property. Esto proporciona una conexión mucho más cercana a la información EXIF ​​en las imágenes, aunque las notas del fabricante son específicas y necesitarán una mayor decodificación.

3

Encontré esto hace un tiempo pero todavía no lo he usado. Parecía que tenía información específica del fabricante.

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

ACTUALIZACIÓN:

El proyecto de metadatos extractora ha estado vivo y bien desde 2002 para Java, y ahora está disponible para .NET. Tiene soporte integral para las notas de fabricante de Canon, así como las de las cámaras y escáneres Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon y Sony.

Puede buscar ejemplos de salida para varias imágenes de cámara Canon (y otras) aquí.

La biblioteca está disponible a través de NuGet o GitHub.

Ejemplo de uso:

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}"); 
} 

ver una respuesta actualizada aquí: C# Retrieve Canon Specific EXIF Data

+1

¡Puedo verificar que esto funciona maravillosamente! Muchos fabricantes almacenan la mayoría de los datos Exif útiles en el campo 'Makernote'. Esta herramienta analiza todo eso en un pequeño y agradable diccionario XML lleno de etiquetas Exif. – glenneroo

+0

Este es un puerto obsoleto de mi proyecto _metadata-extractor_. Ahora mantengo una versión oficial de C# que tiene más funciones y muchas correcciones de errores. Ver [mi respuesta] (http://stackoverflow.com/a/32771543/24874) para más información. –

0

Escribí una herramienta forense hace unos meses en C# y usé EXIF Tool de Phil Harvey para obtener los datos EXIF ​​de las fotografías. Sí, es una biblioteca PERL pero fue muy fácil de instalar e integrar en mi aplicación C#.

1

metadata-extractor proyecto ha estado vivo y bien desde 2002 para Java, y ahora está disponible para .NET. Tiene soporte integral para las notas de fabricante de Canon, así como las de las cámaras y escáneres Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon y Sony.

Puede navegar ejemplo de salida para varias Canon (y otros) imágenes de la cámara here.

La biblioteca está disponible en NuGet o GitHub.

Ejemplo de uso:

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}"); 
} 

Tenga en cuenta que la lib en Mark Redman's answer es un puerto anticuada de mi biblioteca Java desde hace muchos años. Ahora mantengo los proyectos C# y Java para tener paridad de características.

Cuestiones relacionadas