C # Получение данных EXIF, специфичных для Canon - PullRequest
6 голосов
/ 25 апреля 2010

Я написал приложение, которое считывает базовые данные EXIF ​​из изображения через PropertyItems, представленные в классе .Net System.Drawing.Image. Однако я не могу получить данные EXIF, специфичные для Canon, с помощью этих свойств. Как читать эту информацию? Я знаю, что он существует в файле, поскольку Photoshop читает его.

Ответы [ 6 ]

3 голосов
/ 25 апреля 2010

Я нашел это некоторое время назад, но еще не использовал его. Выглядело так, как будто у него была специфическая информация производителя.

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

UPDATE:

Проект извлечения метаданных существует с 2002 года для Java и теперь доступен для .NET. Он имеет всестороннюю поддержку как для Canon, так и для камер и сканеров Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma / Foveon и Sony.

Вы можете просмотреть пример вывода для нескольких изображений камеры Canon (и других) здесь.

Библиотека доступна через NuGet или GitHub.

Пример использования:

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

см. Обновленный ответ здесь: C # Извлечение данных EXIF, специфичных для Canon

2 голосов
/ 25 сентября 2015

Проект извлечения метаданных существует с 2002 года для Java и теперь доступен для .NET. Он имеет всестороннюю поддержку как для Canon, так и для камер и сканеров Agfa, Casio, Epson, Fujifilm, Kodak, Kyocera, Leica, Minolta, Nikon, Olympus, Panasonic, Pentax, Sanyo, Sigma / Foveon и Sony.

Вы можете просмотреть пример вывода для нескольких изображений камеры Canon (и других) здесь .

Библиотека доступна через NuGet или GitHub .

Пример использования:

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

Обратите внимание, что библиотека в Ответ Марка Редмана является устаревшим портом моей библиотеки Java много лет назад. Теперь я поддерживаю проекты C # и Java для обеспечения четности функций.

2 голосов
/ 25 апреля 2010

Если вы компилируете против v3 платформы (или позже), то вы можете загрузить изображения, используя BitmapSource класс , который предоставляет метаданные EXIF ​​через Metadata свойство . Это дает гораздо более тесную связь с информацией EXIF ​​на изображениях, хотя примечания изготовителя являются специфическими и требуют дальнейшего декодирования.

1 голос
/ 07 января 2011

Если они являются файлами RAW, вы можете попробовать использовать dcraw.net для получения информации.

1 голос
/ 25 апреля 2010

В BCL нет ничего, что могло бы помочь с EXIF.

Посмотрите на этот ТАК вопрос и ответы (Какая библиотека EXIF ​​лучше всего подходит для .Net?). Существует несколько коммерческих библиотек и библиотек с открытым исходным кодом, которые можно использовать для получения данных EXIF.

0 голосов
/ 27 января 2014

Несколько месяцев назад я написал криминалистический инструмент на C # и использовал EXIF ​​Tool Фила Харви, чтобы получить данные EXIF ​​из фотографий. Да, это библиотека PERL, но ее было очень легко установить и интегрировать в мое приложение C #.

...