Введение

Растровый графический формат Truevision TGA, часто называемый TARGA, — это растровый графический формат, разработанный компанией Truevision Inc. (в настоящее время входит в состав Avid Technology). Он являлся основным форматом плат TARGA и VISTA, которые были первыми графическими картами для IBM-совместимых ПК, поддерживающими отображение Highcolor/truecolor. Это семейство графических карт предназначалось для профессионального компьютерного синтеза изображений и видеомонтажа на ПК; по этой причине стандартные разрешения файлов изображений TGA соответствуют разрешениям видеоформатов NTSC и PAL. TARGA — это акроним от Truevision Advanced Raster Graphics Adapter; TGA — это аббревиатура от Truevision Graphics Adapter. Файлы TGA обычно имеют расширение ".tga" в системах PC DOS/Windows и macOS (в старых системах Macintosh используется кодовое обозначение типа "TPIC"). Сам формат допускает любую глубину цвета до 255 бит, из которых до 15 бит могут быть выделены под альфа-канал; однако на практике поддерживались только глубины 8, 15, 16, 24 или 32 бита, при этом 16- и 32-битные форматы использовали 1 и 8 бит соответственно для альфа-канала. Цветовые данные могут быть представлены в виде палитры, либо в формате прямого цвета или truecolor. Данные изображения могут храниться в несжатом виде или, опционально, может использоваться без потерь RLE-сжатие, аналогичное PackBits. Этот тип сжатия показывает плохие результаты для типичных фотографических изображений, но достаточно хорошо работает для более простых изображений, таких как значки, мультфильмы и линейные рисунки.

История

Формат файла TGA был первоначально определен и специфицирован компанией AT&T EPICenter с учетом отзывов Island Graphics Inc в 1984 году. AT&T EPICenter было внутренним подразделением AT&T, созданным для продвижения новых технологий, разработанных AT&T для цветных буферов кадров. Компания Truevision, возникшая позднее, стала результатом выкупа сотрудников AT&T в 1987 году. Первые две платы EPICenter – VDA (адаптер видеодисплея) и ICB (плата захвата изображений) – использовали первые версии формата файла TGA. Расширения файлов ".vda" и ".icb" указывали на информацию о данных, специфичных для этих плат. Позже Алан Власук (тогдашний руководитель EPICenter), Брэд Пиллоу (EPICenter) и Стивен Домпиер (президент Island Graphics) пришли к выводу, что необходим более стандартизированный формат файла. Формат файла был создан и реализован Брэдом Пиллоу (EPICenter) и Брайаном Хантом (EPICenter) в ответ на потребность в формате, менее зависимом от конкретных плат. Было внесено простое дополнение к уже используемому формату, которое включало информацию о ширине, высоте, глубине цвета, связанной цветовой карте и начале изображения. В первоначальную спецификацию также было включено поле для метки (до 255 символов), но оно редко использовалось. В то же время появился другой, технически более совершенный формат файла – TIFF, однако его применение для изображений в истинном цвете было ограничено из-за сложности реализации и обмена файлами между приложениями, поддерживающими спецификацию TIFF. Простота и переносимость формата TGA между платформами стали основными причинами его широкого распространения и продолжающегося успеха в самых разных областях применения по всему миру. Изначально формат TGA использовался в программах ICB PAINT и TARGA PAINT (позже известных как TIPS), а также в нескольких проектах, связанных с онлайн-просмотром недвижимости и видеоконференциями с неподвижными кадрами. Текущая версия (2.0) включает в себя ряд улучшений, таких как "почтовые марки" (более известные как миниатюры), альфа-канал, гамма-значение и текстовые метаданные, и была разработана Шоном Штайнером из Truevision Inc. под руководством Кевина Фридли и Дэвида Споэлстры в 1989 году. На момент выпуска она представляла собой передовое решение в области цифровой обработки изображений. Даже сегодня, несмотря на то, что максимальная глубина цвета TGA не подходит для высококачественной предпечатной подготовки и интенсивной обработки изображений, он по-прежнему широко используется в анимационной и видеоиндустрии, поскольку его основными выходными устройствами являются стандартные телевизионные экраны, а не цветные печатные страницы. Несжатые 24-битные изображения TGA относительно просты по сравнению с другими распространенными 24-битными форматами хранения: 24-битный TGA содержит только 18-байтовый заголовок, за которым следуют данные изображения в упакованном формате RGB. В отличие от этого, BMP требует выравнивания строк до 4-байтовой границы, а TIFF и PNG являются контейнерами метаданных, которые не размещают данные изображения или атрибуты в фиксированном месте в файле. 32-битные изображения TGA содержат альфа-канал или ключевой сигнал и часто используются в программах генерации символов, таких как Avid Deko.

Технические детали

Все значения представлены в формате little-endian; номера полей и подполей соответствуют версии 2.0 спецификации. Версия 2 добавила расширенную область и нижний колонтитул. Область для разработчика предназначена для хранения информации, специфичной для приложения.

Данные карты изображения и цвета

Поле №. Длина Описание поля 6 Из поля идентификатора изображения Длина поля идентификатора изображения Необязательное поле, содержащее идентифицирующую информацию 7 Из поля спецификации цветовой карты Данные цветовой карты Таблица соответствий, содержащая данные цветовой карты 8 Из поля спецификации изображения Данные изображения Хранятся в соответствии с описанием изображения.

Область разработчика (необязательно)

Версия 1.0 спецификации TGA была очень простой, и многие разработчики нуждались в хранении большего объема информации, поэтому они стали добавлять в свои файлы дополнительные разделы, предназначенные исключительно для их приложений. В версии 2.0 спецификации эти специфические для приложений расширения и дополнения поддерживаются областью разработчика. Для спецификации важны только смещение и размер области разработчика, и разработчики могут добавлять в нее все, что захотят. Если декодер TGA не может интерпретировать информацию в области разработчика, он обычно игнорирует ее, поскольку предполагается, что она была создана другим приложением. Рекомендуется, чтобы разработчики внедряли логику в свои приложения для определения совместимости данных в области разработчика с приложением; одним из шагов к этому является проверка идентификатора программного обеспечения в конце файла.

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

Поле номер. Длина Поле Описание 10 2 байта Размер расширения Размер в байтах области расширения, всегда 495 11 41 байт Имя автора Имя автора. Если не используется, байты должны быть установлены в NULL (\0) или пробелы 12 324 байта Комментарий автора Комментарий, организованный в четыре строки, каждая из которых состоит из 80 символов плюс символ NULL 13 12 байт Дата/время Дата и время создания изображения 14 41 байт Идентификатор задания 15 6 байт Время задания Часы, минуты и секунды, затраченные на создание файла (для выставления счетов и т. д.) 16 41 байт Идентификатор программного обеспечения Приложение, создавшее файл. 17 3 байта Версия программного обеспечения 18 4 байта Цвет ключа 19 4 байта Коэффициент аспекта пикселя 20 4 байта Значение гаммы 21 4 байта Смещение таблицы цветокоррекции Количество байтов от начала файла до таблицы цветокоррекции, если она присутствует 22 4 байта Смещение изображения "почтовой марки" Количество байтов от начала файла до изображения "почтовой марки", если оно присутствует 23 4 байта Смещение таблицы строк развертки Количество байтов от начала файла до таблицы строк развертки, если она присутствует 24 1 байт Тип атрибутов Определяет альфа-канал

Футл файла (необязательно)

Если файл TGA содержит нижний колонтитул, то, вероятно, это файл TGA версии 2. Нижний колонтитул – это последние 26 байтов файла, из которых последние 18 являются постоянными.

Номер поля | Длина | Поле | Описание
---|---|---|---
28 | 4 байта | Смещение расширения | Смещение в байтах от начала файла
29 | 4 байта | Смещение области разработчика | Смещение в байтах от начала файла
30 | 16 байт | Сигнатура | Содержит "TRUEVISION XFILE"
31 | 1 байт | | Содержит "."
32 | 1 байт | | Содержит NUL

Расхождения в спецификациях

В более старой версии спецификации формата файла TGA, взятой из Приложения C Технического руководства Truevision, указано, что пакеты с кодированием длины серии (RLE) могут пересекать строки сканирования: "Для пакета длины серии заголовок сопровождается одним цветовым значением, которое предполагается повторять указанное в заголовке количество раз. Пакет может пересекать строки сканирования (начинаться на одной строке и заканчиваться на следующей)". Однако на странице 24 спецификации TGA v2.0 утверждается обратное: "Пакеты длины серии не должны кодировать пиксели более чем с одной строки сканирования. Даже если конец одной строки сканирования и начало следующей содержат пиксели одного и того же значения, они должны кодироваться как отдельные пакеты. Иными словами, пакеты RLE не должны переноситься с одной строки на другую". Следовательно, программы чтения TGA должны уметь обрабатывать RLE-пакеты, пересекающие строки сканирования, поскольку это было частью исходной спецификации. Однако при сохранении (создании) файлов TGA необходимо ограничивать RLE-пакеты границами строк сканирования, чтобы соответствовать более новой спецификации TGA v2.0.