Введение

Серия форматов файлов изображений

Формат файлов изображений Tag Image File Format или Tagged Image File Format, обычно известный под аббревиатурами TIFF или TIF, — это формат файлов изображений для хранения растровой графики, популярный среди графических дизайнеров, издательств и фотографов. TIFF широко поддерживается программами для сканирования, факсимильной связи, текстовой обработки, оптического распознавания символов, редактирования изображений, настольной публикации и верстки. Формат был разработан компанией Aldus для использования в настольных издательских системах. Последняя версия 6.0 была опубликована в 1992 году и впоследствии обновлена с указанием авторских прав Adobe Systems после приобретения Aldus компанией Adobe в 1994 году. Было опубликовано несколько технических заметок Aldus и Adobe, содержащих незначительные расширения формата, а также несколько спецификаций, основанных на TIFF 6.0, включая TIFF/EP (ISO 12234-2), TIFF/IT (ISO 12639), TIFF F (RFC 2306) и TIFF FX (RFC 3949).

История

TIFF был создан как попытка убедить производителей настольных сканеров середины 1980-х годов прийти к соглашению об едином формате файлов сканированных изображений, заменив множество проприетарных форматов. Изначально TIFF был только бинарным форматом изображения (всего два возможных значения для каждого пикселя), поскольку именно это могли обрабатывать настольные сканеры. С увеличением мощности сканеров и объёма дискового пространства настольных компьютеров, TIFF был расширен для поддержки изображений в оттенках серого, а затем и цветных изображений. Сегодня TIFF, наряду с JPEG и PNG, является популярным форматом для изображений с глубокой цветовой гаммой. Первая версия спецификации TIFF была опубликована корпорацией Aldus осенью 1986 года после двух крупных предварительных версий. Её можно обозначить как Ревизию 3.0. Она была опубликована после серии встреч с различными производителями сканеров и разработчиками программного обеспечения. В апреле 1987 года вышла Ревизия 4.0, содержащая в основном незначительные улучшения. В октябре 1988 года была выпущена Ревизия 5.0, добавившая поддержку изображений с палитрой цветов и сжатия LZW. TIFF – сложный формат, определяющий множество тегов, из которых в каждом файле обычно используется лишь несколько. Это привело к появлению реализаций, поддерживающих множество различных подмножеств формата, что породило шутку о том, что TIFF расшифровывается как "Thousands of Incompatible File Formats" (Тысячи несовместимых форматов файлов). Эта проблема была решена в Ревизии 6.0.

Обзор

Файл TIFF содержит одно или несколько изображений, называемых подфайлами в спецификации. Основной сценарий использования нескольких подфайлов — кодирование многостраничного факсимильного сообщения в одном файле, но также допускается использование различных подфайлов для разных вариантов одного и того же изображения, например, отсканированных с разным разрешением. Вместо непрерывного диапазона байтов в файле каждый подфайл представляет собой структуру данных, верхним уровнем которой является каталог файлов изображений (IFD). Базовые программы чтения TIFF обязаны использовать только первый подфайл, но каждый IFD содержит поле для связи со следующим IFD. Именно в IFD находятся теги, благодаря которым TIFF получил свое название. Каждый IFD содержит одну или несколько записей, каждая из которых идентифицируется своим тегом. Теги — это произвольные 16-битные числа; их символические имена, такие как ImageWidth, часто используемые при обсуждении данных TIFF, не отображаются явно в самом файле. Каждая запись IFD имеет связанное значение, которое может быть декодировано на основе общих правил формата, но его значение зависит от тега. В пределах одного IFD может быть не более одной записи с определенным тегом. Некоторые теги используются для связи с фактическими данными изображения, другие теги указывают, как следует интерпретировать данные изображения, а третьи — для метаданных изображения. Изображения TIFF состоят из прямоугольных сеток пикселей. Две оси этой геометрии называются горизонтальной (или X, или шириной) и вертикальной (или Y, или длиной). Горизонтальное и вертикальное разрешение не обязательно должны быть равными (поскольку в факсимильных сообщениях они обычно не равны). Базовое изображение TIFF разделяет вертикальный диапазон изображения на одну или несколько полос, которые кодируются (в частности, сжимаются) отдельно. Исторически это облегчало работу программ чтения TIFF (например, факсов) с ограниченной емкостью для хранения несжатых данных — одна полоса декодировалась и сразу же печаталась, но текущая спецификация обосновывает это «повышенной гибкостью редактирования и эффективным буферизацией ввода-вывода». Стандарт факсимильных сообщений в RFC 3949 основан на этих спецификациях TIFF. Файлы TIFF, которые строго используют базовые «наборы тегов», определенные в TIFF 6.0, ограничивают технологию сжатия методами, указанными в TIFF 6.0, и адекватно протестированы и проверены несколькими источниками для всех создаваемых документов, могут использоваться для хранения документов. Распространенные проблемы, возникающие в отрасли управления контентом и документами при использовании файлов TIFF, связаны с тем, что структуры содержат проприетарные заголовки, не документированы должным образом, содержат «оболочки» или другие контейнеры вокруг наборов данных TIFF, включают неправильные технологии сжатия или эти технологии сжатия реализованы неправильно. Варианты TIFF могут использоваться в системах документооборота и управления контентом/документами с использованием 2D-сжатия CCITT Group IV, которое поддерживает черно-белые (битональные, монохромные) изображения, а также другие технологии сжатия, поддерживающие цвет. Когда емкость хранения и пропускная способность сети были более серьезной проблемой, чем обычно наблюдается в современных серверных средах, документы большого объема сканировались в черно-белом режиме (а не в цвете или в оттенках серого), чтобы сэкономить емкость хранения. Включение тега SampleFormat в TIFF 6.0 позволяет файлам TIFF обрабатывать расширенные типы пиксельных данных, включая целочисленные изображения с более чем 8 битами на канал и изображения с плавающей точкой. Этот тег сделал TIFF 6.0 жизнеспособным форматом для научной обработки изображений, где требуется расширенная точность. Например, TIFF можно использовать для хранения изображений, полученных с помощью научных ПЗС-камер, которые обеспечивают разрешение интенсивности до 16 бит на фотосайт. Сохранение последовательности изображений в одном файле TIFF также возможно и разрешено в соответствии с TIFF 6.0, при условии соблюдения правил для многостраничных изображений.

Подробности

TIFF — это гибкий и адаптируемый формат файла для обработки изображений и данных в одном файле, включающий теги заголовка (размер, разрешение, расположение данных изображения, примененное сжатие изображения), определяющие геометрию изображения. Например, TIFF-файл может служить контейнером, содержащим изображения, сжатые форматами JPEG (с потерями) и PackBits (без потерь). TIFF-файл также может включать векторный обрезной контур (очертания, кадрирование, рамки изображения). Возможность хранения данных изображения в формате без потерь делает TIFF-файл полезным для архивирования изображений, поскольку, в отличие от стандартных JPEG-файлов, TIFF-файл с использованием сжатия без потерь (или без сжатия) можно редактировать и повторно сохранять без потери качества изображения. Это не относится к случаю использования TIFF в качестве контейнера для сжатого JPEG. Другие возможности TIFF — слои и страницы. TIFF предлагает возможность использования LZW-сжатия — метода сжатия данных без потерь для уменьшения размера файла. Использование этой возможности было ограничено патентами на технологию LZW до их истечения в 2004 году. Спецификация TIFF 6.0 состоит из следующих частей: или "MM" для порядка байтов big endian (также известный как "Motorola byte ordering", с ок. 1980 г.). Все двухбайтные слова, четырехбайтные слова и т. д. в TIFF-файле предполагаются в указанном порядке байтов. Спецификация TIFF 6.0 утверждает, что совместимые с TIFF читатели должны поддерживать оба порядка байтов (II и MM), а создатели файлов могут использовать любой из них.

Другие поля TIFF

Читатели TIFF должны быть готовы к встрече и игнорированию частных полей, не описанных в спецификации TIFF. Читатели TIFF не должны отказываться читать TIFF-файл, если отсутствуют необязательные поля. Как следствие, базовые возможности TIFF стали наименьшим общим знаменателем для TIFF. Базовые возможности TIFF расширяются в расширениях TIFF (определенных в спецификации TIFF 6.0, Часть 2), но расширения также могут быть определены в частных тегах. Расширения TIFF официально называются TIFF 6.0, Часть 2: Расширения TIFF. Вот несколько примеров расширений TIFF, определенных в спецификации TIFF 6.0: Это позволяет определять изображения в виде древовидной структуры. Каждое изображение может иметь последовательность дочерних элементов, каждый из которых сам является изображением. Типичное применение – предоставление эскизов или нескольких версий изображения в различных цветовых пространствах.

Плитка

Изображение TIFF также может состоять из нескольких тайлов. Все тайлы в одном изображении имеют одинаковые размеры и могут быть сжаты независимо от всего изображения, аналогично полосам (см. выше). Изображения, состоящие из тайлов, являются частью TIFF 6.0, Часть 2: Расширения TIFF, поэтому поддержка изображений, состоящих из тайлов, не является обязательной для базовых TIFF-ридеров.

Другие расширения

Согласно спецификации TIFF 6.0 (Введение), все файлы TIFF, использующие предлагаемые расширения TIFF, не одобренные Adobe как часть базового TIFF (как правило, для специализированных применений TIFF, выходящих за рамки издательского дела, общей графики или обмена изображениями), должны либо не именоваться как файлы TIFF, либо быть каким-либо образом помечены, чтобы их не путали с основными файлами TIFF.

Большой ТИФФ

Формат файла TIFF использует 32-битные смещения, что ограничивает размер файла примерно 4 ГБ. Некоторые реализации даже используют знаковое 32-битное смещение, что приводит к проблемам при размере около 2 ГБ. BigTIFF — это вариант формата TIFF, использующий 64-битные смещения и поддерживающий значительно большие файлы (до 18 экзабайт). Спецификация формата файла BigTIFF была реализована в 2007 году в разрабатываемых версиях LibTIFF 4.0, которая была выпущена в стабильной версии в декабре 2011 года. Поддержка формата BigTIFF приложениями ограничена.

Выход

Спецификация Exif построена на основе TIFF. Для несжатых данных изображения файл Exif представляет собой, по сути, TIFF-файл с некоторыми приватными тегами. Для данных изображения, сжатых JPEG, Exif использует формат обмена файлами JPEG, но встраивает TIFF-файл в сегмент APP1 файла. Первый IFD (в спецификации Exif именуемый 0-м) этого встроенного TIFF не содержит данных изображения и хранит только метаданные для основного изображения. Однако в этом встроенном TIFF может присутствовать миниатюрное изображение, которое предоставляется вторым IFD (в спецификации Exif именуемым 1-м). Формат аудиофайла Exif не строится на основе TIFF. Exif определяет большое количество приватных тегов для метаданных изображения, в частности, настроек камеры и данных геопозиционирования, но большинство из них не встречаются в обычных TIFF IFD. Вместо этого они хранятся в отдельных IFD, на которые указывают приватные теги в основном IFD.

TIFF/IT P2

Поскольку TIFF/IT P1 имел ряд ограничений, был разработан расширенный формат. В ISO 12639:2004 введен новый расширенный уровень соответствия TIFF/IT P2 (профиль 2). TIFF/IT P2 добавил ряд функций к TIFF/IT P1, таких как:

Частные теги в спецификации TIFF/IT P1 изначально предназначались для того, чтобы предоставить разработчикам возможность добавлять специфическую функциональность для конкретных приложений. Разработчики (например, Scitex) могут использовать частные теги для сохранения определенных значений печати или другой функциональности. Частные теги обычно обозначаются номерами тегов, равными или превышающими 32768. Все частные теги должны быть запрошены у Adobe (администратора TIFF) и зарегистрированы. В 1992 году DDAP (Digital Distribution of Advertising for Publication, позднее Digital Directions in Applications for Production) сформулировал свои требования к цифровой доставке рекламы. Эти требования были представлены в CGATS (Комитет по стандартам технологии графических искусств), аккредитованный ANSI, для разработки аккредитованного стандарта формата файла для доставки цифровых рекламных материалов. CGATS рассмотрел альтернативные варианты для этой цели, и TIFF казался идеальным кандидатом, за исключением того, что он не мог обрабатывать некоторые необходимые функции. CGATS обратился к Aldus (администратору TIFF) с просьбой предоставить блок собственных частных тегов TIFF для реализации того, что в конечном итоге стало TIFF/IT. Например, возможность определения последовательности цветов обеспечивается тегом 34017 – тегом последовательности цветов. Стандарт ISO 12639:2004 (второе издание) для TIFF/IT заменил стандарт ISO 12639:1998. Впоследствии он был расширен в ISO 12639:2004 / Amd. 1:2007 – Использование сжатия JBIG2 Amd2 в TIFF/IT.