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), как и исходное изображение. [000108]