Вопрос по jpeg, c# – Чтение данных EXIF из JPG

4

Мне нужно проанализировать тысячи файлов JPEG (путем извлечения данных EXIF). Это более 50 ГБ данных. Я не могу прочитать файлы целиком, потому что это займет слишком много времени.

Есть ли какой-либо метод в C # для чтения только EXIF-данных из этих файлов без необходимости загрузки и распаковки целых файлов JPEG?

РЕДАКТИРОВАТЬ: Почему мне нужен быстрый метод?
Я пытался решить этот вопрос:Как получить данные EXIF из файла, используя C #
А для 1000 изображений общим размером ~ 1 ГБ на анализ ушло 3 минуты. Так что для более крупной (50G) библиотеки фотографий это может занять 2 часа. И когда вам нужна почти немедленная информация, такая как: «Какой предпочтительный зум используется вашим клиентом»? это слишком медленно.

Ваш Ответ

4   ответа
1

GdPicture.NET Imaging SDK Стартовая версия 10 предоставляет новый механизм парсинга изображений, который обеспечивает прямой доступ к метаданным изображения (EXIF, GPS, XMP, IPTC ...) без декодирования пикселей. Он поддерживает более 90 графических форматов, включая JPEG, TIFF, RAW и WebP.

Вот ссылка на базу знаний GdPicture.NET, которая демонстрирует, как извлекать метаданные с использованием C # и VB.NET (также поддерживаются многие другие языки):руководство

Если кому-то понадобится дополнительная информация, я буду рад помочь.

Отказ от ответственности: я являюсь архитектором продукта GdPicture.NET.

8

ExifLib - быстрый Exif экстрактор данных для .NET 2.0+ (и полный проект тоже), который показывает, как прочитать минимальные данные, необходимые для получения только информации EXIF.

Error: User Rate Limit Exceeded Marek Kwiendacz
0

информация Exif хранится в заголовке перед изображением, поэтому все, что вам нужно сделать, это открыть файл, прочитать заголовок exif и декодировать все, что вам нужно. Это если вы читаете данные exif вручную (что не сложно).

Если все, что вам нужно, это размеры, то это прямо на фронте

Редактировать: обратите внимание, что exif-данные не обязательно должны быть впереди, но они почти всегда есть, поэтому можно предположить, что в целом они будут намного быстрее, чем если бы они не были.

Кроме того, проверяли ли вы, что использование стандартного API является «слишком медленным»? Я бы не подумал, что для 50G потребуется так много времени (или если сделать это по-другому, то обязательно будет быстрее).

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

metadata-extractor библиотека для .NET. Он был активен с 2002 года и прошел широкое тестирование. В моих тестах он просматривал 2 ГБ изображений, извлекая все метаданные за 4 секунды на моем компьютере. Вы можете оптимизировать дальше, сказав, что он читает только определенные типы метаданных, такие как Exif. Он поддерживает множество форматов изображений / видео и множество типов метаданных.

Доступен наGitHub а такжеNuGet.

Похожие вопросы