TGA
Розширення файлу: |
. |
---|---|
MIME-тип: |
image/x-targa |
Type code: | 'TPIC' |
Узагальнений ідентифікатор типу: | com.truevision.tga-image |
Тип формату: | растровий графічний формат |
Truevision TGA (TGA) — растровий графічний формат. Початково був твором компанії Truevision Inc для графічних адаптерів власного виробництва ще в 1984 році, але надалі набув популярности та був використаний у різних платформах, надто в галузі обробки відео та анімації.
Зазвичай файли цього формату мають розширення .tga у системах DOS-типу, або .tpic на комп'ютерах Macintosh. Формат підтримує глибина кольору 1—32 біти на піксель. Є також підтримка альфа-каналів, стиску в формат RLE.
Огляд структури файлу[ред. | ред. код]
Файл зображення 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 файл може бути використаний для збереження зображень з різною глибиною кольору. Визначено сім типів зображень:
значення | опис | використовується мапа кольорів | Компресія |
---|---|---|---|
0 | Немає зображення | ні | ні |
1 | Зображення з палітрою | так | ні |
2 | Truecolor зображення | ні | ні |
3 | Монохромне зображення | ні | ні |
9 | Зображення з палітрою | так | так |
10 | Truecolor зображення | ні | так |
11 | Монохромне зображення | ні | так |
Перші 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.
Розробник не зобов'язаний читати, записувати або використовувати зони розширення або розробника, але, навіть коли вони не використовуються, рекомендується включати у файл Підвал і вказувати як зсуви до невживаних зон нулі.
|
![]() |
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |