Введение
Растровый графический формат 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. Этот тип сжатия показывает плохие результаты для типичных фотографических изображений, но достаточно хорошо работает для более простых изображений, таких как значки, мультфильмы и линейные рисунки.
Truevision TGA, often referred to as TARGA, is a raster graphics file format created by Truevision Inc. (now part of Avid Technology). It was the native format of TARGA and VISTA boards, which were the first graphic cards for IBM compatible PCs to support Highcolor/truecolor display. This family of graphic cards was intended for professional computer image synthesis and video editing with PCs; for this reason, usual resolutions of TGA image files match those of the NTSC and PAL video formats. TARGA is an acronym for Truevision Advanced Raster Graphics Adapter; TGA is an initialism for Truevision Graphics Adapter. TGA files commonly have the extension ". tga" on PC DOS/Windows systems and macOS (older Macintosh systems use the "TPIC" type code). The format itself permits any pixel bit depth up to 255, of which up to 15 bits can be dedicated to an alpha channel; however, the only bit depths supported in practice were 8, 15, 16, 24, or 32, where the 16 and 32 bit formats used 1 and 8 bits respectively for the alpha channel. Color data can be color mapped, or in direct color or truecolor format. Image data may be stored raw, or optionally, a lossless RLE compression similar to PackBits can be employed. This type of compression performs poorly for typical photographic images, but works acceptably well for simpler images, such as icons, cartoons and line drawings.
История
Формат файла 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.