Как получить EXIF-данные из моих файлов jpeg?
Вопрос
Мне нужно связать дату и имя с некоторыми файлами jpeg, которые я включаю в свой пакет или, возможно, загружаю со своего собственного сервера в папку Documents.Есть ли способ легко извлечь EXIF-данные?
Если это так, то я буду использовать EXIF для хранения этой информации.Если нет, то мне придется создать базу данных или плоский файл, который сопоставит мои дополнительные данные с файлом изображения.
Имейте в виду, что это не фотографии, сделанные iPhone и предоставленные через UIImagePicker или извне "песочницы".Это фотографии, которые я добавляю в приложение или загружаю в папку Docs самостоятельно.Важным моментом здесь является легкость:
Легче ли это сделать
- прочитать EXIF-файл из моих файлов изображений
- имейте другой файл, который отслеживает файл изображения и связанные с ним данные (может быть sqlite)
Спасибо!
Решение
Вы можете попробовать использовать iphone-инструментарий exif чтобы извлечь данные.Однако это лицензированный GPL, и если ваше приложение коммерческое, вам нужно будет договориться о лицензионном соглашении.Если это нежизнеспособно, то вы можете захотеть использовать маршрут внешних метаданных.
Другие советы
Фактический EXIF данные хранятся в виде небольшого РАЗМОЛВКА файл с TIFF-тегами, специфичными для EXIF, для информации, у которой нет домашнего адреса в спецификации TIFF.При размещении в файле JPEG (на самом деле это битовый поток JFIF) он сохраняется в маркере JPEG APP1, который ограничивает общий размер данных EXIF чуть менее 64 КБ.
Не должно быть так сложно найти маркер APP1, подтвердить, что он содержит данные EXIF, а затем проанализировать определенную коллекцию тегов EXIF с помощью довольно грубого кодирования.
Один из примеров, на который вы можете посмотреть, это дополнительный инструмент который делает именно это и написан на Perl с открытым исходным кодом на тех же условиях, что и сам Perl.
Если эти файлы предназначены исключительно для использования в вашем собственном приложении и не будут повторно использоваться пользователем в других инструментах, то потребуется некоторое время для сохранения ваших данных в формате XML / JSON в сегменте комментариев 0xFFFE.Как упоминалось ранее, вам не хватает всего 64 кб для игры.
Прелесть использования сегмента комментариев заключается в том, что он должен быть сохранен инструментами редактирования изображений, к нему быстрый доступ (поскольку вам не нужно просматривать блоки IFD, в которых хранятся EXIF-данные, вы просто читаете / записываете текстовую строку с заголовком типа / длины 4 байта) и доступен для чтения / записи человеком в графическом приложении.
Я бы предпочел не хранить связанные данные в БД, если это практически возможно, чтобы вы не рисковали тем, что БД рассинхронизируется с доступными файлами.
Я использую Дополнительный инструмент
встроен в мое приложение.Работает с удовольствием.