Как проанализировать смещение второй таблицы ifd (файлы TIFF)

Для проекта я пишу синтаксический анализатор, который должен просто извлечь один тег exif из файла изображения (по соображениям эффективности, в конце концов, он должен анализировать тег DateTimeOriginal из ~3,5 миллионов изображений). Я уже понял, как для анализа заголовка tiff и тегов, образующих первую таблицу ifd. Но теперь я застрял в точке, где мне нужно получить смещение к следующей таблице ifd. Я порылся в Интернете и нашел теги SubIFD и InteroperabilityOffset, но все, что мне удалось найти, — это противоречивая информация. Официальная документация Adobe гласит:

«Каталог файлов изображений (IFD) состоит из 2-байтового счетчика количества записей каталога (т. е. количества полей), за которым следует последовательность 12-байтовых записей полей, за которыми следует 4-байтовое смещение следующий IFD (или 0, если его нет). (Не забудьте записать 4 байта 0 после последнего IFD.)"

Но, просматривая некоторые из моих собственных изображений с помощью шестнадцатеричного редактора, я не смог найти это смещение: четыре байта после первой таблицы ifd указывали только на какой-то фиктивный адрес в середине данных изображения или на адрес, который даже не существует, потому что файл не такой уж и большой. Теперь мой вопрос: есть ли что-нибудь, что я здесь упустил из виду? Может быть, я пропустил какие-то подробности о том, как работают смещения или где они на самом деле хранятся?

PS: Я учел порядок байтов, так что проблема не в этом.

0 ответов

Другие вопросы по тегам