Смекни!
smekni.com

Описание графического формата TGA (стр. 2 из 3)

PixelDepth – это номер байта в пикселе, содержащий определенные биты.

ImageDesc – описатель изображения. Несет в себе следующую информацию:

0-3 биты – количество битов атрибутов в пикселе. Определенные биты находятся только в пикселе на 16 и 32 битных форматах TGA (альфа-канал, оверлейные биты и биты прерывания). Это связано с работой адаптеров Tagra.

4-5 биты определяют позицию начала изображения. Если оба бита равны 0, то изображение начинается в левом нижнем углу.

6-7 биты – не используются (резерв) и должны быть всегда на 0.

1.3. Изображение ID.

Изображение ID поля хранит информацию, которая идентифицирует изображение по нескольким критериям (название файла, имя автора, серийный номер и т.д.). Если ID длина поля не 0, следующее поле должно быть в пределах TGA файла. Размер этого поля указывает на величину поля длины ID в заголовке. Эта величина может быть в диапазоне от 0 до 255. Величина 0 указывает на то, что изображение ID файла не присутствует в файле TGA.

1.4. Цветовая карта.

Размер изображения TGA ограничен до 65,535 пикселей в высоту и до 65,535 пикселей в ширину. Это происходит потому, что 16-ти битное поле используется, чтобы сохранить размер изображения в заголовке. В противном случае, размер изображения TGA будет неограничен. Типичный размер для Tagra 16, 24 и 32 – это 512 х 482 пиксель; для NuVista – 640 х 480 пиксель; и для ATVista – 756 х 486 пиксель.

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

Псевдоцвет изображения хранит величину, указывающую на палитру в каждом пикселе данных. Это палитра содержит и показывает действительную величину пикселя. Псевдоцвет изображения палитры хранит каждую пиксель величину также, как и отдельный элемент в палитре. Для каждого пикселя нет индивидуального цветового канала.

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

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

Палитра присутствует в файле TGA, если цветовая карта поля находится на 1. Величина ноль указывает, что палитра не присутствует в файле TGA. Важно понять, что палитра должна присутствовать в файле изображения TGA даже если не используются данные изображения. Все файлы изображения TGA созданные по программе TIPS содержат палитру, чтобы сохранять 256 цветов, находящихся в цветовой палитре TIPS.

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

Формат TGA, тем не менее, не определяет номер элемента цветовой карты, основанной на глубине пикселя, таким образом 57 цветовое изображение может иметь только 57 элементов палитры. Номер элемента в палитре содержится в заголовке CmapLength.

Величина каждого элемента в палитре находится в заголовке CMapDepth, глубина пикселя и глубина элемента палитры не всегда одинакова. 24-х битное изображение должно содержать 256 элементов палитры, при этом каждый элемент должен иметь глубину 24 бита, оно должно содержать данные о пикселях только с 8-ми битной глубиной. Потому что все 8 битов нужны, чтобы указать 256 элементов палитры. Также возможно использовать и 4096 элементную палитру, где каждый элемент имеет 8 бит в глубину. Следовательно, каждый пиксель изображения нужен, для того чтобы иметь минимальную 16 битную глубину. Глубина элемента палитры всегда содержит в себе альфа-канал, находящийся выше, или прерывает бит информацию.

1.5. Кодировка данных изображения.

Данные изображения, хранящиеся в файле TGA несжаты. По этой причине файлы TGA бывают больших размеров, особенно когда данные биткарты имеют глубину 24 или 32 бита. В связи с этим в спецификацию TGA помещена простая, но эффективная схема RLE сжатия.

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

Сжатые данные, использующие схему TGA RLE могут содержать два вида: зашифрованные и необработанные данные. Используя эти термины, RLE сжатия для TGA может быть представлено так:

Если используется незакодированный пакет:

Счетчик устанавливается на 0

Считывает пиксель и сканирует диапазон данных

Считывает второй пиксель и сканирует диапазон данных

Если первый пиксель такой же как второй

Увеличивает счетчик

Иначе

Пишет величину счетчика

Пишет величину пикселя

Иначе используется необработанный пакет:

Счетчик устанавливается на 0

Считывает количество пикселей и сканирует диапазон данных

Увеличивает счетчик на каждый читаемый пиксель

Пишет значение счетчика

Пишет все значения читаемых пикселей.

Все форматы Tagra идентифицируются полем Data Type, которое является однобайтовым двойным целым числом, расположенным в третьем байте файла. Ниже приведены различные типы файлов, которые идентифицируются этим полем:

0 – Нет данных, описывающих изображения

1 - Несжатые, color-mapped изображения.

2 - Несжатые, RGB изображения.

3 - Несжатые, черно-белые изображения.

9 - Runlength кодируемые color-mapped изображения.

10 - Runlength кодируемые изображения RGB.

11 - Сжатые, черно-белые изображения.

32 – Сжатые color-mapped данные, использующие Huffman, Дельта, и runlength кодировки.

33 - Сжатые color-mapped данные, использующие Huffman, Дельта, и runlength кодировки. Процесс quadtree-типа с 4 проходами.

Этот документ описывает только один формат: 1.

Тип данных №1: color-mapped изображения.

Длина Описание
0 1 Число знаков в идентификационном поле. Это поле – однобайтовое целое число без знака, определяющее длину поля «области идентификации изображения». Диапазон значений – от 0 до 255. Значение 0 значит, что область идентификации изображения не включена.
1 1 Тип карты цветов. Это поле содержит бинарную единицу для изображений первого типа.
2 1 Код типа изображения. Это поле всегда содержит бинарную единицу. (Это то, что делает его первым типом).
3 3 5 7 5 2 2 1 Спецификация набора цветов. Координаты начала карты цветов. Целое число – индекс первой записи цветов карты. Длина карты цветов. Целое число – счетчик записей цветов. Размер записей цветов в карте. Число битов в каждой записи цветов. 16 – для Tagra16, 24 для Tagra24, 32 для Tagra32.
8 8 10 14 16 17 10 2 2 2 1 1 Спецификация изображения. X – компонента начала координат изображения. Целое число – X координата нижнего левого угла изображения. Ширина изображения. Целое число – ширина изображения в пикселях. Высота изображения. Целое число – высота изображения в пикселях. Размер пикселя изображения. Число битов в хранящемся индексе пикселя. Байт описания изображения. Биты с 3 по 0 – количество битов, свойственных каждому пикселю. Бит 4 – зарезервирован. Должен быть установлен на 0. Бит 5 – бит начала экранных координат. (0 = начало координат нижнем левом углу, 1 = начало координат в верхнем левом углу.) Должен стоять 0 для изображений типа Truevision. Биты с 7 по 6 – хранение данных, регулируемое флагом. (00 = без чередования; 01 = двустороннее (четное/нечетное) чередование; 10 = чередование четырьмя способами; 11 = зарезервированный.) Весь этот байт должен быть установлен на 0. Н спрашивайте меня, почему.
18 различно Идентифицирующее поле изображения. Содержит идентификационное поле изображения произвольной формы, длины, которая определена в первом байте из записи изображения. Обычно, это опускается (длина в первом байте от 1 до 0), но может включать до 255 символов. Если требуется сохранить большее количество идентификационной информации, она сохраняется после данных изображения.
различно различно Данные о карте цветов. Смещение определяется размером идентификационного поля изображения. Длина определяется спецификацией карты цветов, которая описывает размер каждой записи и количество записей. Каждая запись цвета – 2, 3 или 4 байта. Неиспользованные биты нужны для того, чтобы определить свойства бита. 4 байтная запись включает: 1 байт для синего, 1 байт для зеленого, 1 байт для красного и 1 байт информации о свойствах. 3 байтная запись по 1 байту на каждый цвет: синий, зеленый и красный. 2 байтная запись разбивается следующим образом: ARRRRRGG GGGBBBBB, где каждый символ представляет собой бит. Но, из-за особенностей хранения, первым байтом, полученным из файла, является GGGBBBBB, а вторым – ARRRRRGG. «A» представляет бит, содержащий описание свойств.
различно различно Поле данных изображения. Это поле определяет ширину и высоту цветовых индексов карты. Каждый индекс сохранен как целое чисто байтов (обычно 1 или 2). Все поля не содержат знаков. Младший байт сохраняется раньше двух-байтового поля.

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