Составные метаданные TIFF и EXIF - PullRequest
2 голосов
/ 18 сентября 2009

В формате tif, когда вы добавляете метаданные EXIF, он создает новый IFD (tif-direcory) и сохраняет метаданные exif в виде полей. Таким образом, при разборе файла TIF с одним изображением и данными EXIF ​​легко. Но вы можете получить многокомпонентные tiff-файлы, где tif-файл может содержать более одного изображения. Вопрос в том, может ли каждое из этих изображений иметь данные EXIF? Создает ли это новый IFD для метаданных каждого изображения?

Каково расположение IFD?

Спецификация tif не вдавалась в подробности, я знаю, что если в одном tif-файле изображения есть EXIF-данные, то есть поле смещения для EXIF-данных, поэтому я могу перейти к этому месту и выполнить анализ самостоятельно, но библиотека Java Sanselan дает мне легкий доступ к EXIF ​​IFD и полям, но , если , возможно несколько EXIF ​​IFD (по одному для каждого изображения), тогда библиотека не сообщает мне, к какому изображению относятся данные ,

Если вы не можете иметь больше 1 EXIF ​​IFD в файле из нескольких частей tif, то это будет тривиально! Другими словами: Нужно ли мне вручную разбирать exif-данные? Поскольку мне нужно только сделать это , если , вы можете прикрепить данные EXIF ​​к каждому изображению внутри составного tif.

Или кто-нибудь знает хорошее приложение для Linux, которое позволяет мне добавлять EXIF-данные в tif-файлы, чтобы я мог сам разобраться?

Ответы [ 2 ]

1 голос
/ 14 января 2015

Чтобы ответить на ваши вопросы:

может ли каждое из этих изображений иметь данные EXIF? Создает ли это новый IFD для метаданных каждого изображения? Каково расположение IFD?

Да, каждое из этих изображений может иметь свои собственные данные EXIF. Каждое изображение связано со своим собственным IFD, и каждый EXIF-данные является SUB-IFD внутри соответствующего IFD изображения.

но библиотека Java Sanselan дает мне легкий доступ к EXIF ​​IFD и полям, но если возможно несколько EXIF ​​IFD (по одному для каждого изображения), то библиотека не сообщает мне, к какому изображению относятся данные.

Я никогда не использовал Sanselan и его преемника Apache Imaging, поэтому я думаю, что здесь может произойти две вещи: во-первых, Sanselan может по умолчанию выбрать первую страницу для многостраничного TIFF, если вы действительно можете вставить EXIF ​​в многостраничный TIFF; или может быть параметр, который можно установить где-нибудь с помощью метода, подобного setWorkingPage(int page), и это то, что я делаю с библиотекой изображений Java " icafe ".

Ниже приведена более подробная информация о том, что происходит внутри изображения TIFF, когда вам необходимо добавить метаданные EXIF:

Для одностраничного TIFF существует «основной» IFD, который определяет всю информацию, касающуюся содержащегося там изображения. Когда требуются данные EXIF, в основной IFD добавляется специальный тег EXIF_SUB_IFD. Значение для этого тега является адресом смещения относительно начала потока изображения. Теперь, если мы перейдем к адресу, указанному смещением, мы на самом деле найдем «подчиненный» IFD с точно такой же структурой, что и «основной» IFD, который содержит все данные EXIF.

Вышеупомянутая структура в точности подобна дереву каталогов и, следовательно, имени IFD Однако здесь есть небольшая разница: основной IFD должен содержать фактические данные изображения, а суб-IFD EXIF ​​- нет. Фактически, есть также суб-IFD GPS, который параллельно с суб-IFD EXIF ​​и с той же структурой. Интересно, что данные для EXIF ​​могут храниться в любом месте потока изображений TIFF (при условии, что они не нарушают другую часть каталога и данные изображения).

Теперь доходит до многостраничного TIFF. Страницы могут быть связаны или нет. Последние 4 байта каждой страницы IFD указывают на смещение другого IFD. Иногда они собираются вместе, чтобы служить «единым» документом, который может быть от сканера. Тем не менее, каждая страница сама по себе представляет собой «одну» страницу TIFF, которая может содержать свои собственные метаданные EXIF, как и одна страница TIFF.

0 голосов
/ 18 сентября 2009

Вы, вероятно, хотите проверить ExifTool . Это работает довольно хорошо для того, что я использую это (JPEG), но я никогда не использовал это с файлами TIFF, содержащими много изображений Также проверьте ImageMagick, у него есть множество полезных инструментов.

...