Delphi World - Заголовок TGA-файла
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Заголовок TGA-файла

OK, берем книжку 'Graphics File Formats, 2nd Edition' (форматы графических файлов) авторов David C. Kay & John R. Levine, и читаем формат заголовка файла для хранения изображения формата Targa.

Описание заголовка файла для изображения формата Targa
Смещение
Длина (в байтах)
Описание
0 1 Длина ID-поля (ID Field Length)
1 1 Тип цветовой карты (Color-map Type)
2 1 Тип изображения (Image Type)
      Информация о специфике цветовой карты (Color-map-specific Info)
3 2 Первое включение цветовой карты (First Color-map Entry)
5 2 Длина цветовой карты (Color-map Length)
7 1 Размер цветовой карты (Color-map Entry Size)
      Информация о специфике изображения (Image-specific Info)
8 2 Горизонтальная координата начала изображения (Image X Origin)
10 2 Вертикальная координата начала изображения (Image Y Origin)
12 2 Ширина изображения (Image Width)
14 2 Высота изображения (Image Height)
16 1 Бит на пиксел (Bits-Per-Pixel)
17 1 Биты дескриптора изображения (Image-Descriptor Bits)

Для изображений с разрешением True-color значение типа цветовой карты должно равняться нулю, в остальных случаях единице. В случае, когда цветовая карта присутствует, ее размер должен равняться значению 15, 16, 24 или 32. Для значений 15 и 16 каждая цветовая карта при загрузке использует 2 байта в формате:

Верхний байт    Нижний байт
A RRRRR GG      GGG BBBBB  

где бит 'A' устанавливается в 0 для 15-битных цветовых величин. 24-битный размер карты хранится как три байта в следующем порядке: (B)lue (синий), (G)reen (зеленый), и (R)ed (красный). 32-битный размер цветовой карты использует четыре байта, ее порядок такой: (B)lue (синий), (G)reen (зеленый), (R)ed (красный) и значение атрибута - (A)ttribute.

Наконец, код, хранящий тип изображения (Image Type) должен содержать одно из следующих значений:

Код             Описание
----            -----------
0               Изображение отсутствует
1               Цветовая карта, без компрессии
2               True-color, без компрессии
3               Черно-белое, без компрессии
9               Цветовая карта, RLE-компрессия
10              True-color, RLE-компрессия
11              Черно-белое, RLE-компрессия
Горизонтальная и вертикальная координата начала изображения (Image X & Y Origins) и размеры изображения (Image Width & Height) разъяснений не требуют. Бит на пиксел (Bits-Per-Pixel) обозначает количество битов, содержащихся в точке изображения и может быть равен значению 8, 16, 24, и 32.

Биыт дескриптора изображения (The Image Descriptor bytes) содержит несколько полей битов, которые содержат следующую информацию:

Биты            Описание
----            -----------
0-3             Биты атрибутов (описаны ниже)
4               Ориентация Слева-на-Право 0=Л/П 1=П/Л
5               Ориентация Вехр/Низ 0=Н/В 1=В/Н
6-7             Чередование линий 00H=Нет, 40H=2 линии, 80H=4 линии
Биты атрибутов используются для определения атрибутов цветов в цветовой карте или true-color пикселах. 0 - alpha-данные (alpha-канал) отсутствуют, 1 - игнорирование или неопределено, 2 - не определено, но должно быть сохранено, 3 - наличие alpha-данных и 4 - информация о пикселе уже была умножена на alpha-величину.

Файлы версии Targa 2.0 также имеют файловый колонтитул, который может содержать дополнительное изображение или комментарии. Эти файлы всегда заканчиваются строкой-терминатором 'TRUEVISION-TARGA.'. Так, если ваше Targa-изображение заканчивается значением 'TRUEVISION-TARGA.' + 00H, то вы можете извлечь восемь байтов до строки, чтобы найти начало расширенной области и месторасположение каталога сборки данного файла. Обычно файловый колонтитул версии 2.0 имеет следующий формат:

Формат файлового колонтитула Targa версии 2.0
Байт
Длина
Описание
0 4 32-битное смещение расширенной области
4 4 32-битное смещение каталога сборки
8 17 TRUEVISION-TARGA.
25 1 Двоичный ноль ($0)

Я не собираюсь давать полные описания каталога сборки и области расширения. Вместо этого я приведу описание "почтовой марки", которая может содержаться в формате Targa V2.0. Данная "марка"-иконка должна иметь размеры 64 X 64 пикселей, представляет собой уменьшенный образ изображения, может включаться в файл по желанию компоновщика и не является обязательной.

Область расширения
Смещение
Длина
Описание
0 2 Размер области расширения (должна быть 495)
2 41 Имя автора
43 81 Авторские комментарии
124 81 Авторские комментарии
205 81 Авторские комментарии
286 81 Авторские комментарии
367 2 Месяц создания
369 2 День создания
371 2 Год создания
... ... ...
482 4 Смещение в файле таблицы цветовой коррекции
486 4 Смещение в файле изображения "почтовой марки"
490 4 Смещение в файле таблицы чередования линий
494 1 Байты атрибутов

Данная "почтовая марка", при наличии, может быть использована вами непосредственно. Она хранится в виде несжатого изоюражения в том же цветовом формате (цветовой карте или True-color), как и исходное изображение.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования