Составные метаданные TIFF и EXIF

В формате tif при добавлении метаданных EXIF ​​создается новый IFD (tif-directory) и сохраняются метаданные 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, чтобы я мог понять это сам?


person matt-the-woliver    schedule 18.09.2009    source источник


Ответы (2)


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

может ли каждое из этих изображений иметь данные 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), и это то, что я делаю с "icafe" Библиотека изображений Java.

Ниже приведена более подробная информация о том, что происходит внутри изображения 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.

person dragon66    schedule 14.01.2015

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

person John Deters    schedule 18.09.2009