Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
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), как и исходное изображение.