Truevision TGA

Из Википедии, бесплатной энциклопедии

Truevision TGA
Расширение .tga, .tpic, .vda, .vst или .icb
MIME-тип image/x-targa[1] и image/x-tga[2]
Разработчик Truevision[вд][3]
Тип формата растровая графика

Truevision TGA (TGA) — растровый графический формат. Первоначально был создан компанией Truevision Inc. для графических адаптеров собственного производства ещё в 1984, но в дальнейшем стал популярен на самых разных платформах, особенно в области обработки видео, анимации.

Обычно файлы этого формата имеют расширение .tga в системах, следующих традициям DOS, или .tpic на компьютерах Macintosh. Формат поддерживает глубину цвета 1—32 бита на пиксель. Есть поддержка альфа-каналов, сжатия RLE.

Обзор структуры файла

[править | править код]

Файл изображения TGA состоит из пяти зон, каждая из которых содержит одно или больше полей фиксированной или переменной длины:

  • (1) Заголовок файла
  • (2) Изображение/карта цветов
  • (3) Зона разработчика
  • (4) Зона расширения
  • (5) Подвал

Последние три зоны были добавлены в спецификацию формата в сентябре 1989 г. По этой причине файлы, созданные при помощи ПО, написанного до этой даты, могут не содержать этих зон. Чтобы определить, относится ли файл к оригинальной версии или к новой, следует считать последние 26 байт файла. Для новой версии эти байты будут содержать подвал файла, байты 8-23 которого содержат набор ASCII символов «TRUEVISION-XFILE». Наличие этой строки означает, что файл может содержать зоны (3) и (4).

Сам подвал имеет следующее строение (байт — назначение):

  • 0-3 — Смещение зоны расширения
  • 4-7 — Смещение списка зон разработчика
  • 8-23 — Подпись файла нового формата
  • 24 — ASCII символ '.'
  • 25 — Нулевой байт

Более подробное описание в конце статьи.

Заголовок файла

[править | править код]

Длина идентификатора (1 байт)

[править | править код]

Указывает количество байт, содержащихся в поле Идентификатор. Максимальное количество символов — 255. Нулевое значение указывает, что файл не содержит поле Идентификатор.

Тип карты цветов (1 байт)

[править | править код]

Указывает тип карты цветов, включенной в файл. На данный момент(описание от января 1991г) определено два значения — 0(файл не содержит карты цветов) и 1(файл содержит карту цветов). Первые 128 значений этого поля зарезервированы для использования Truevision, остальные могут быть использованы разработчиками ПО.

True-Color изображения обычно не используют карту цветов, но некоторые приложения сохраняют информацию о палитре или другие данные в этом поле. Рекомендуется проверять значение поля Тип Изображения(описано в следующем пункте), чтобы убедиться что файл может использовать эти данные. В противном случае это поле можно игнорировать.

При записи или сохранении файла в целях совместимости следует заполнять это поле нулевыми значениями. В новом формате файла для сохранения данных разработчика существует отдельная зона.

Тип изображения (1 байт)

[править | править код]

TGA файл может быть использован для сохранения изображений с различной глубиной цвета. Определено семь типов изображений:

Значение Описание Используется карта цветов Используется сжатие
0 Нет изображения Нет Нет
1 Изображение с палитрой Да Нет
2 TrueColor изображение Нет Нет
3 Монохромное изображение Нет Нет
9 Изображение с палитрой Да Да
10 TrueColor изображение Нет Да
11 Монохромное изображение Нет Да

Первые 128 значений зарезервированы для использования Truevision, остальные могут быть использованы разработчиками.

Описание карты цветов (5 байт)

[править | править код]

Это поле и его подразделы описывают карту цветов (если она используется). Если поле Color Map Type(описано выше) содержит ноль, эти пять байт также должны содержать нули.

Поле Размер Описание
Индекс первого элемента 2 байта Указывает на начальный элемент палитры.
Длина карты цветов 2 байта Указывает количество элементов палитры.
Размер элемента карты цветов 1 байт Количество бит на один элемент палитры. Обычно используются значения 15, 16, 24 или 32.

Описание изображения (10 байт)

[править | править код]

Это поле описывает размеры, положение на экране и глубину пикселя изображения.

Поле Размер Описание
Положение изображения по оси X 2 байта Определяет абсолютную координату левого нижнего угла изображения по горизонтали.
Положение изображения по оси Y 2 байта Определяет абсолютную координату левого нижнего угла изображения по вертикали.
Ширина изображения 2 байта Ширина изображения в пикселях.
Высота изображения 2 байта Высота изображения в пикселях.
Разрядность цвета 1 байт Определяет количество используемых бит на пиксель.
Описатель изображения 1 байт Биты 3-0 этого поля определяют количество бит альфа-канала.

Биты 5 и 4 определяют порядок передачи пиксельных данных из файла на экран. Бит 4 устанавливается для порядка «справа налево», бит 5 — для порядка «сверху вниз». Биты 7 и 6 в целях совместимости должны быть установлены в 0.

Изображение/карта цветов

[править | править код]

Идентификатор (переменная длина)

[править | править код]

Это поле является идентификатором файла и может иметь длину от 0 до 255 байт.

Данные карты цветов (переменная длина)

[править | править код]

Если тип карты цветов (описано выше) содержит ноль, это поле будет отсутствовать. Поля Размер элемента карты цветов и Длина карты цветов позволяют определить размер этого поля. Каждый элемент карты цветов занимает целое число байт; каждый цветовой канал занимает MIN(Размер элемента карты цветов/3 , 8) бит, то есть для размера элемента в 24 каждый из трех каналов цвета займет 8 бит, так же, как и для элементов размером 32 бита.

Данные изображения (переменная длина)

[править | править код]

Это поле содержит (ширина*высота) пикселей. Каждый пиксель указывает данные изображения в одном из следующих форматов: одиночный индекс элемента карты цветов, отдельные значения для каждого канала цвета либо отдельные индексы интенсивности для формата Direct Color.

Зона разработчика (переменная длина)

[править | править код]

Эта зона может иметь любой размер и содержать любой тип информации на усмотрение разработчика ПО, хотя рекомендуется использовать её исключительно для хранения специфичной информации, не предназначенной для остального ПО и не описанной в спецификации формата. Так как файл может содержать более одной зоны разработчика, существует список зон, содержащий «карту» полей, включенных в эти зоны. В байтах 4-7 Подвала файла содержится смещение от начала файла к началу списка зон разработчика. Если эти байты содержат нулевое значение, списка зон и самих зон в файле нет.

Список зон разработчика

[править | править код]
  • Количество тегов (2 бита)

Указывает количество тегов, содержащихся в списке. Остальная часть списка после этого значения содержит последовательности тег-смещение-размер.

  • Тег (2 байта)

Каждый тег может содержать значение от 0 до 65535. Значения 0-32767 могут быть использованы разработчиками, остальные зарезервированы для использования Truevision.

  • Смещение (4 байта)

Содержит значение, указывающее смещение от начала файла к началу поля, на которое ссылается тег.

  • Размер (4 байта)

Указывает размер поля, на которое ссылается тег.

Зона расширения

[править | править код]

Смещение к Зоне расширения хранится в Подвале файла. Если смещение равно нулю — файл не содержит зоны расширения.

Размер зоны расширения (2 байта)

[править | править код]

Содержит длину зоны в байтах. Для версии 2.0 формата это значение должно быть равным 495.

Имя автора (41 байт)

[править | править код]

Место для ASCII строки длиной до 40 символов и одного нулевого байта. Если поле не используется, оно заполняется нулями или пробелами. Последний символ всегда должен быть равен нулю.

Комментарий автора (324 байта)

[править | править код]

Место для четырёх строк, каждая из которых может вместить нулевой байт и до 80 значащих символов. Неиспользуемое место заполняется нулями либо пробелами, 81-й байт каждой строки должен быть равен нулю.

Дата и время (12 байт)

[править | править код]

Это поле содержит последовательность из шести 2-х байтовых значений для даты и времени сохранения изображения (месяц-день-год-час-минуты-секунды). Если это поле не используется, оно заполняется нулями.

Job name/ID (41 байт)

[править | править код]

Место для 40 ASCII символов и одного нулевого байта.

Job time (6 байт)

[править | править код]

Аналогично полю Дата/Время, место для хранения трех значений (час-минута-секунда).

ID ПО (41 байт)

[править | править код]

Место для строки-идентификатора ПО, с помощью которого был создан файл.

Версия ПО (3 байта)

[править | править код]

Поле содержит две составные части — 2-х байтное число и ASCII символ. Место для сохранения версии ПО, с помощью которого был создан файл.

Ключевой цвет (4 байта)

[править | править код]

4-х байтное значение, определяющее ключевой цвет альфа канала в формате ARGB. Если изображение не содержит альфа канала, значение первого байта устанавливается в ноль. Ключевой цвет определяет цвет фона или «прозрачный цвет». Если поле не используется, оно заполняется нулями.

Соотношение сторон пикселя (aspect ratio) (4 байта)

[править | править код]

Содержит два 2-х байтных значения, определяющих ширину и высоту пикселя соответственно. Одинаковые ненулевые значения определяют квадратный пиксель, ноль во втором значении означает, что соотношение не указано.

Гамма (4 байта)

[править | править код]

Содержит два 2-х байтных значения, используемых в качестве числителя и знаменателя при вычислении дробного значения гаммы. Результат деления должен находиться в диапазоне от 0 до 10.0 и иметь только один знак в дробной части. Когда это поле не используется, оба значения должны быть равны друг другу(дабы получить 1.0 после деления), либо второе значение должно быть равно нулю.

Смещение коррекции цвета (4 байта)

[править | править код]

Содержит смещение в байтах от начала файла к таблице коррекции. Таблица может быть помещена в любом месте после поля данных изображения и перед концом файла. Если изображение не требует коррекции, это значение равно нулю.

Смещение Postage Stamp (4 байта)

[править | править код]

Содержит смещение к уменьшенной копии изображения, содержащегося в файле. Изображение записывается между Таблицей Скан Линий(описано ниже) и Подвалом файла.

Смещение Скан Линий (4 байта)

[править | править код]

Смещение к началу таблицы Скан Линий.

Тип атрибутов (1 байт)

[править | править код]

Это значение определяет тип данных альфа-канала, сохраненных с изображением.

  • 0 — нет альфа-канала.
  • 1 — неопределенные данные в альфа-канале, могут быть проигнорированы.
  • 2 — неопределенные данные в альфа-канале, должны быть сохранены.
  • 3 — полноценный альфа-канал в наличии.
  • 4 — предумноженный альфа-канал (значения цветов уже помножены на значения в альфа-канале).

Пример предумноженного альфа-канала. Данные альфа-канала используются для указания степени непрозрачности каждого пикселя (используется когда одно изображение накладывается на другое изображение), где 0 показывает, что пиксель полностью прозрачен, а значение 1 показывает, что пиксель полностью непрозрачен (в предположении, что значения всех компонент нормализованы). Четвёрка чисел (a, r, g, b) со значениями (0.5, 1, 0, 0) будет показывать, что пиксель чисто красный с прозрачностью 0.5. По различным причинам (включая создание составных изображений) лучше использовать предварительное умножение отдельных компонентов цвета на значение альфа-канала. Такое умножение даст следующую четвёрку чисел (0.5, 0.5, 0, 0).

Значение 4 в поле Типа Атрибутов (поле 24) будет показывать, что цветовые компоненты пикселя уже отмасштабированы значением из альфа-канала. Подробности, касающиеся предварительно умноженных значений см. в материалах конференции SIGGRAPH 1984.

Таблица Скан-линий

[править | править код]

Таблица должна содержать набор смещений в байтах от начала файла к началам скан-линий, в соответствующем порядке (например сверху вниз/снизу вверх).

Изображение Postage Stamp

[править | править код]

Уменьшенная копия изображения, содержащегося в файле. Сохраняется в том же формате, что и полноразмерное, но без применения методов сжатия. Первый байт содержит ширину копии в пикселях, второй — высоту. Truevision не рекомендует использовать изображения размером больше чем 64×64 пикселя.

Таблица коррекции цвета (2 КБ)

[править | править код]

Таблица содержит 256×4 2-х байтных значений, каждая последовательность из четырёх таких значений соответствует каналам ARGB.

  • Смещение в байтах от начала файла к зоне расширения (4 байта).
  • Смещение к списку зон разработчика (4 байта).
  • Сигнатура новой версии файла (ASCII строка «TRUEVISION-XFILE.\0»).

Предпоследний символ сигнатуры должен быть символом «.»(точка), иначе файл не будет опознан как правильный файл TGA.

Разработчик не обязан читать, записывать или использовать зоны расширения или разработчика, но, даже когда они не используются, рекомендуется включать в файл Подвал и указывать в качестве смещений к неиспользуемым зонам нули.

Примечания

[править | править код]