Truevision TGA (TGA) — растровийграфічний формат. Початково був розробкою компанії Truevision Inc для графічних адаптерів власного виробництва ще в 1984 році, але надалі набув популярности та був використаний у різних платформах, особливо в галузі обробки відео та анімації.
Файл зображення TGA складається з п'яти зон, кожна з яких містить одне або більше полів фіксованої або змінної довжини:
(1) Заголовок файлу
(2) Зображення/мапа кольорів
(3) Зона розробника
(4) Зона розширення
(5) Підвал
Останні три зони додано в специфікацію формату у вересні 1989 р. З цієї причини файли, створені за допомогою ПЗ, написаного до цієї дати, можуть не містити цих зон.
Щоб визначити, чи належить файл до оригінальної версії або до нової, слід переглянути останні 26 байт файлу. Для нової версії ці байти міститимуть підвал файлу, байти 8-23 якого містять набір ASCII символів «TRUEVISION-XFILE». Наявність цього рядка означає, що файл може містити зони (3) і (4).
Сам підвал має наступну будову(байт — призначення):
0-3 — Зсув зони розширення
4-7 — Зсув списку зон розробника
8-23 — Підпис файлу нового формату
24 — ASCII символ '.'
25 — Нульовий байт
Докладніший опис наприкінці статті.
Заголовок файлу
Довжина ідентифікатора (1 байт)
Вказує кількість байт, що містяться в полі Ідентифікатора. Максимальна кількість символів — 255. Нульове значення вказує, що файл не містить поле Ідентифікатор.
Тип мапи кольорів (1 байт)
Вказує тип мапи кольорів, включеної у файл. На 1991 рік визначено два значення — 0 (файл не містить карти кольорів) і 1 (файл містить мапу кольорів). Перші 128 значень цього поля зарезервовано для використання Truevision, останні можуть бути використані розробниками ПЗ.
True-Color зображення зазвичай не використовують мапу кольорів, але деякі додатки зберігають інформацію про палітру або інші дані в цьому полі. Рекомендується перевіряти значення поля тип зображення (описано в наступному пункті), щоб переконатися що файл може використовувати ці дані. Інакше це поле можна ігнорувати.
При записі або збереженні файлу в цілях сумісності потрібно заповнювати це поле нульовими значеннями. У новому форматі файлу для збереження даних розробника існує окрема зона.
Тип Зображення (1 байт)
TGA файл може бути використаний для збереження зображень з різною глибиною кольору. Визначено сім типів зображень:
Перші 128 значень зарезервовано для використання Truevision, останні можуть бути використані розробниками.
Опис мапи кольорів (5 байт)
Це поле і його пункти описують мапу кольорів (якщо вона використовується). Якщо поле Color Map Type (описано вище) містить нуль, ці п'ять байт також повинні містити нулі.
індекс першого елемента — 2 байти
Вказує на початковий елемент палітри.
довжина мапи кольорів — 2 байти
Вказує кількість елементів палітри.
розмір елементу мапи кольорів — 1 байт
Зазвичай використовуються значення 15, 16, 24 або 32.
Опис зображення (10 байт)
Це поле описує розміри, положення на екрані і глибину пікселя зображення.
Положення зображення по осі X — 2 байта
Визначає абсолютну координату лівого нижнього кута зображення по горизонталі.
Положення зображення по осі Y — 2 байта
Визначає абсолютну координату лівого нижнього кута зображення по вертикалі.
Ширина зображення — 2 байти
Ширина зображення в пікселях.
Висота изображения — 2 байти
Висота зображення в пікселях.
Глибина кольору — 1 байт
Визначає кількість біт на піксель.
Описувач зображення — 1 байт
Біти 3-0 цього поля визначають кількість атрибутивних бітів на піксель.
Біти 5 і 4 визначають порядок передачі піксельних даних з файлу на екран. Біт 4 встановлюється для порядку «зліва направо», біт 5 — для порядку «зверху вниз».
Біти 7 і 6 в цілях сумісності мають бути встановлені в 0.
Зображення/мапа кольорів
Ідентифікатор (змінна довжина)
Це поле є ідентифікатором файлу і може мати довжину від 0 до 255 байт.
Дані мапи кольору (змінна довжина)
Якщо Тип мапи Кольорів (описано више) містить нуль, це поле буде відсутнє.
Поля Розмір елементу мапи кольорів і Довжина мапи кольорів дозволяють визначити розмір цього поля.
Кожен елемент мапи кольорів займає ціле число байт; кожен колірний канал займає MIN (Розмір елементу мапи кольорів/3 , 8) біт, тобто для розміру елементу в 24 кожен з трьох каналів кольору займе 8 байт, так само, як і для елементів розміром 32 біта.
Дані зображення (змінна довжина)
Це поле містить дані про ширину та висоту пікселів. Кожен піксель вказує дані зображення в одному з наступних форматів: самостійний індекс елементу мапи кольорів, окремі значення для кожного каналу кольору або окремі індекси інтенсивності для формату Direct Color.
Зона розробника (змінна довжина)
Ця зона може мати будь-який розмір і містити будь-який тип інформації на розсуд розробника ПЗ, хоча рекомендується використовувати її виключно для зберігання специфічної інформації, не призначеної для іншого ПЗ і не описаної в специфікації формату.
Оскільки файл може містити більше ніж одну зону розробника, існує список зон, «мапа» полів, включених в ці зони. У байтах 4-7 підвалу файлу міститься зсув від початку файлу на початок списку зон розробника. Якщо ці байти містять нульове значення, списку зон і самих зон у файлі немає.
Список зон розробника
Кількість тегів (2 байти)
Вказує кількість тегів, що містяться в списку.
Решта частини списку після цього значення містить послідовності тег-зсув-розмір.
Тег (2 байти)
Кожен тег може містити значення від 0-65535. Значення 0-32767 можуть бути використані розробниками, останні зарезервовані для використання Truevision.
Зсув (4 байта)
Містить значення, вказуюче зсув від початку файлу на початок поля, на яке посилається тег.
Розмір (4 байти)
Вказує розмір поля, на яке посилається тег.
Зона розширення
Зсув до Зони розширення зберігається в підвалі файлу. Якщо зсув дорівнює нулю — файл не містить зони розширення.
Розмір зони розширення (2 байти)
Містить довжину зони в байтах. Для версії 2.0 формату, це значення має бути рівним 495.
Ім'я автора (41 байт)
Місце для ASCII рядка завдовжки до 40 символів і одного нульового байта. Якщо поле не використовується, воно заповнюється нулями або пропусками. Останній символ завжди має дорівнювати нулю.
Коментар автора (324 байти)
Місце для чотирьох рядків, кожна з яких може вміщати нульовий байт і до 80 значущих символів. Невикористане місце заповнюється нулями або пропусками, 81-й байт кожного рядка має дорівнювати нулю.
Дата/Час (12 байт)
Це поле містить послідовність з шести 2-х байтових значень для дати і часу збереження зображення (місяць-день-рік-час-хвилина-секунда). Якщо це поле не використовується, воно заповнюється нулями.
Ім'я/ID завдання (41 байт)
Місце для 40 ASCII символів і одного нульового байта.
Job time (6 байт)
Аналогічно полю дата/час, місце для зберігання трьох значень (час-хвилина-секунда).
ID ПЗ (41 байт)
Місце для рядка-ідентифікатора ПЗ, за допомогою якого був створений файл.
Версія ПЗ (3 байти)
Поле містить дві складові частини — 2-х байтне число і ASCII символ. Місце для збереження версії ПЗ, за допомогою якого був створений файл.
Ключовий колір (4 байти)
4-х байтне значення, що визначає ключовий колір альфа каналу у форматі ARGB. Якщо зображення не містить альфа-каналу, значення першого байта встановлюється в нуль.
Ключовий колір визначає колір фону або «прозорий колір». Якщо поле не використовується, воно заповнюється нулями.
Співвідношення сторін пікселя (aspect ratio) (4 байти)
Містить два 2-х байтних значення, визначальну ширину і висоту пікселя відповідно. Однакові ненульові значення визначають квадратний піксель, нуль в другому значенні означає, що співвідношення не вказане.
Гамма (4 байти)
Містить два 2-х байтних значення, використовуваних як чисельник і знаменник при обчисленні дробового значення гамми. Результат ділення повинен знаходитися в діапазоні від 0 до 10.0 і мати тільки один знак в дробовій частині. Коли це поле не використовується, обидва значення мають дорівнювати один одному (щоб отримати 1.0 після ділення), або друге значення має дорівнювати нулю.
Зсув Корекція Кольору (4 байти)
Містить зсув в байтах від початку файлу до таблиці корекції. Таблиця може бути поміщена в будь-якому місці після поля Даних Зображення і перед Підвалом файлу. Якщо зображення не вимагає корекції, це значення дорівнює нулю.
Зсув Postage Stamp (4 байти)
Містить зсув до зменшеної копії зображення, що міститься у файлі. Зображення записується між Таблицею Скан Ліній (описано нижче) і Підвалом файлу.
Зсув Скан Ліній (4 байти)
Зсув до початку таблиці Скан Ліній.
Тип Аттрибутів (1 байт)
Це значення визначає тип даних альфа-каналу, збережених із зображенням.
0 — немає альфа-каналу
1 — невизначені дані в альфа-каналі, можуть бути проігноровані
2 — невизначені дані в альфа-каналі, мають бути збережені
3 — повноцінний альфа-канал в наявності
4 — передпомножений альфа-канал(значення кольорів вже помножені на значення в альфа-каналі)
Pre-multiplied Alpha Example: Suppose the Alpha channel data is being used to specify the opacity of each pixel (for use when the image is overlayed on another image), where 0 indicates that the pixel is completely transparent and a value of 1 indicates that the pixel is completely opaque (assume all component values have been normalized). A quadruple (a, r, g, b) of (0.5, 1, 0, 0) would indicate that the pixel is pure red with a transparency of one-half. For numerous reasons (including image compositing) is is better to pre-multiply the individual color components with the value in the Alpha channel. A pre-multiplication of the above would produce a quadruple (0.5, 0.5, 0, 0).
A value of 3 in the Attributes Type Field (field 23) would indicate that the color components of the pixel have already been scaled by the value in the Alpha channel. For more information concerning pre-multiplied values, refer to the 1984 SIGGRAPH Conference Proceedings.
Таблиця Скан Ліній
Таблиця повинна містити набір зсувів в байтах від початку файлу до початків скан ліній, у відповідному порядку (наприклад зверху вниз/знизу вгору).
Зображення Postage Stamp
Зменшена копія зображення, що міститься у файлі. Зберігається в тому ж форматі, що і повнорозмірне, але без застосування методів стискання. Перший байт містить ширину копії в пікселях, другої, — висоту. Truevision не рекомендовано використовувати зображення розміром більш ніж 64х64 пікселя.
Таблиця Корекції Кольору (2 КБ)
Таблиця містить 256х4 2-х байтних значень, кожна послідовність з чотирьох таких значень відповідає каналам ARGB.
Підвал
Зсув в байтах від початку файлу до зони розширення (4 байти).
Зсув до списку зон розробника (4 байти).
Сигнатура нової версії файлу (ASCII рядок «TRUEVISION-XFILE.\0»).
Передостанній символ сигнатури повинен бути символом «.»(period), інакше файл не буде розпізнаний як правильний файл TGA.
Розробник не зобов'язаний читати, записувати або використовувати зони розширення або розробника, але, навіть коли вони не використовуються, рекомендується включати у файл Підвал і вказувати як зсуви до невживаних зон нулі.