2010-04-25 12 views
5

Napisałem aplikację, która odczytuje podstawowe dane EXIF ​​z obrazu za pośrednictwem klasy PropertyItems wyeksponowanej w klasie System.Drawing.Image .Net. Nie mogę jednak pobrać danych EXIF ​​firmy Canon za pośrednictwem tych właściwości. Jak czytać te informacje? Wiem, że istnieje w pliku, tak jak czyta go Photoshop.C# Odzyskiwanie danych EXIF ​​firmy Canon

Odpowiedz

1

Nie ma nic wbudowanego w BCL, które pomoże w EXIF.

Spójrz na this SO pytanie i odpowiedzi (Jaka jest najlepsza biblioteka EXIF ​​dla .Net?). Istnieje kilka komercyjnych i otwartych bibliotek, które można wykorzystać do uzyskania danych EXIF.

2

Jeśli kompilujesz się z wersją 3 programu Framework (lub nowszą wersją), możesz załadować obrazy przy użyciu narzędzia BitmapSource class, które udostępnia metadane EXIF ​​za pośrednictwem Metadata property. Zapewnia to znacznie bliższe połączenie z informacjami EXIF ​​na zdjęciach, chociaż uwagi producenta są specyficzne i będą wymagały dalszego dekodowania.

3

Znalazłem to jakiś czas temu, ale jeszcze go nie używałem. Wyglądało na to, że ma informacje dotyczące konkretnego producenta.

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

UPDATE:

Projekt metadanych wyciąg był żywy i dobrze od 2002 do Java, i jest teraz dostępny dla .NET. Posiada wszechstronne wsparcie makernotes firmy Canon, jak również aparatów i skanerów firmy Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon oraz Sony.

Możesz przeglądać przykładowe wyjście dla kilku zdjęć z kamery Canon (i innych) tutaj.

Biblioteka jest dostępna za pośrednictwem NuGet lub GitHub.

wykorzystanie próbki:

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

zobaczyć zaktualizowaną odpowiedź tutaj: C# Retrieve Canon Specific EXIF Data

+1

Mogę to sprawdzić cudownie! Wielu producentów przechowuje większość użytecznych danych Exif w polu "Makernote". To narzędzie analizuje wszystko w małym, przyjaznym dla XML słowniku pełnym tagów Exif. – glenneroo

+0

To jest nieaktualny port mojego projektu _metadata-extractor_. Obecnie utrzymuję oficjalną wersję C#, która ma więcej funkcji i wiele poprawek. Zobacz [moja odpowiedź] (http://stackoverflow.com/a/32771543/24874), aby uzyskać więcej informacji. –

0

Kilka miesięcy temu napisałem narzędzie kryminalistyczne w języku C# i użyłem EXIF Tool Phila Harveya do uzyskania danych EXIF ​​ze zdjęć. Tak, jest to biblioteka PERL, ale była naprawdę łatwa do zainstalowania i zintegrowania z moją aplikacją C#.

1

Projekt meta-ekstraktor był żywy i dobrze od 2002 roku dla Java i jest już dostępny dla .NET. Posiada wszechstronne wsparcie makernotes firmy Canon, jak również aparatów i skanerów firmy Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma/Foveon oraz Sony.

Można przeglądać przykładowe wyjście dla kilku zdjęć z aparatu Canon (i innych) here.

Biblioteka jest dostępna pod numerem NuGet lub GitHub.

wykorzystanie próbki:

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

Zauważ, że lib w Mark Redman's answer jest przestarzały port mojej biblioteki Java od wielu lat temu. Teraz utrzymuję zarówno projekty C#, jak i Java, aby mieć parzystość funkcji.

Powiązane problemy