Как получить данные EXIF из файла с помощью C# [закрыто]


Я хотел бы написать небольшую программу на C#, которая просматривает мои фотографии jpeg и, например, сортирует их в датированные папки (используя мои соглашения о датировке, черт возьми...).

кто-нибудь знает относительно простой способ получить данные EXIF, такие как дата и время или экспозиция программно? Спасибо!

7 64

7 ответов:

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


EDITmetadata-extractor поддерживает .NET тоже. Это очень быстрая и простая библиотека для доступа к метаданным из изображений и видео.

он полностью поддерживает Exif, а также как IPTC, XMP и многие другие типы метаданных из типов файлов, включая JPEG, PNG, GIF, PNG, ICO, WebP, PSD,...

var directories = ImageMetadataReader.ReadMetadata(imagePath);

// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

// access the date time
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);

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

Как было предложено, вы можете использовать некоторую стороннюю библиотеку или сделать это вручную (что не так много работы), но самый простой и гибкий, возможно, использовать встроенные функции в .NET. Подробнее см.:

вот ссылка на другой подобный так вопрос, который имеет ответ, указывающий на эту хорошую статью о "чтение, запись и метаданные фотографий" in. Net.

можно использовать TagLib# который используется такими приложениями, как F-Spot. Помимо Exif, он будет читать большое количество форматов метаданных для изображения, аудио и видео.

Мне тоже нравится ExifUtils API, но он глючит и не активно развивается.

класс Image имеет свойства PropertyItems и PropertyIdList. Вы можете их использовать.

инструмент командной строки ExifTool Фила Харви работает с десятками форматов изображений, включая множество проприетарных форматов RAW, и может манипулировать различными форматами метаданных, включая EXIF, GPS, IPTC, XMP, JFIF.

очень простое в использовании, легкое, впечатляющее приложение.

получение данных EXIF из изображения JPEG включает в себя:

  1. Поиск к маркерам JPEG, который упоминает начало данных EXIF,. например, обычно oxFFE1-это маркер, вставляемый при кодировании данных EXIF, который является сегментом приложения, куда идут данные EXIF.
  2. проанализируйте все данные от 0xffe1 до 0xFFE2 . Эти данные будут потоком байтов, в файле с кодировкой JPEG.
  3. ASCII эквивалент этих байтов будет содержать различную информацию связанный с датой изображения, названием модели камеры, экспозицией и т. д...