Informationen zum TGA Dateiformat
Das TGA-Format (Truevision Graphics Adapter)
TGA (Truevision Graphics Adapter), häufig auch als TARGA (Truevision Advanced Raster Graphics Adapter) bezeichnet, ist ein Rastergrafikformat für digitale Bilddaten. Das Format wurde 1984 von AT&T EPICenter in Zusammenarbeit mit Island Graphics Inc. entwickelt[1] und diente als natives Dateiformat für die TARGA- und VISTA-Grafikkarten – die ersten Grafikkarten für IBM-kompatible PCs mit High-Color- und True-Color-Unterstützung.
Entwicklung und Standardisierung
AT&T EPICenter war eine interne Ausgründung von AT&T zur Vermarktung neuer Framebuffer-Technologien. Die Entwickler Brad Pillow und Bryan Hunt schufen das TGA-Format als hardwareunabhängige Alternative zu den board-spezifischen Formaten VDA und ICB[1]. Nach einem Management-Buyout 1987 entstand aus EPICenter die Firma Truevision Inc.[1]
Die aktuelle Version 2.0 wurde im Januar 1991 von Truevision veröffentlicht[2]. Diese Version erweiterte das ursprüngliche Format um optionale Strukturen: Extension Area mit Metadaten (Autor, Datum, Gamma-Wert, etc.), Developer Area für anwendungsspezifische Daten und einen File Footer zur Versionserkennung[2].
Technische Struktur
Die Grundstruktur einer TGA-Datei besteht aus einem 18-Byte-Header, gefolgt von optionalen Bildinformationen, der Farbpalette (bei indizierten Bildern) und den eigentlichen Bilddaten[2]. TGA-Dateien verwenden Little-Endian-Byte-Reihenfolge[2].
Der Header definiert:
Bildtyp (color-mapped, true-color, grayscale – jeweils unkomprimiert oder RLE-komprimiert)
Bildabmessungen und Position
Bits pro Pixel (8, 16, 24 oder 32 Bit)[2]
Anzahl der Attribut-/Alpha-Bits
Pixel-Anordnung (bottom-up/top-down, left-right/right-left) und Interleaving-Modus (in der gelebten Praxis immer non-interleaved)[2]
Unterstützte Bildtypen
TGA definiert drei Grundtypen[2]:
Pseudo-Color (Type 1): Jeder Pixelwert ist ein Index in eine Farbpalette mit programmierbaren RGB-Werten.
True-Color (Type 2): Jeder Pixelwert enthält direkt die RGB-Komponenten. Bei 32 Bit kommen 8 Bit für den Alpha-Kanal hinzu.
Grayscale (Type 3): Jeder Pixelwert repräsentiert einen Grauwert ohne Farbpalette.
Alle drei Typen existieren zusätzlich als RLE-komprimierte Varianten (Type 9, 10, 11)[2].
RLE-Kompression
Die optionale Run-Length-Encoding-Kompression arbeitet mit zwei Pakettypen[2]:
Run-Length Packets: Ein Header-Byte (Bit 7 = 1) und ein einzelner Pixelwert, der wiederholt wird. Die unteren 7 Bits kodieren die Anzahl minus 1 (1-128 Pixel pro Paket).
Raw Packets: Ein Header-Byte (Bit 7 = 0) gefolgt von der entsprechenden Anzahl unterschiedlicher Pixelwerte.
Wichtig: In Version 2.0 dürfen RLE-Pakete nicht über Zeilengrenzen hinausgehen[2]. Die Version 1.0 erlaubte dies noch, weshalb TGA-Reader beide Varianten unterstützen müssen. In der Praxis sehe ich auch in Version 2.0 RLE-Pakete über Zeilengrenzen hinaus.
Extension Area (Version 2.0)
Die optionale Extension Area umfasst 495 Bytes mit standardisierten Feldern[2]:
Author Name (40 Zeichen)
Author Comments (4×80 Zeichen)
Date/Time Stamp (6 SHORT-Werte für Monat, Tag, Jahr, Stunde, Minute, Sekunde)
Job Name/ID (40 Zeichen)
Job Time (akkumulierte Zeit in Stunden, Minuten, Sekunden)
Software ID und Version
Key Color (Transparenzfarbe/Hintergrundfarbe)
Pixel Aspect Ratio
Gamma Value
Zeiger auf Color Correction Table, Postage Stamp Image und Scan Line Table
Versionserkennung
TGA 2.0-Dateien enden mit einem 26-Byte-Footer[2]. Die Bytes 8-23 enthalten die ASCII-Signatur „TRUEVISION-XFILE“, gefolgt von einem Punkt (Byte 24) und einem Null-Terminator (Byte 25). Fehlt diese Signatur, handelt es sich um das Original-Format (Version 1.0).
Dateiendungen
Die empfohlene Standardendung ist .tga für DOS, UNIX und Windows[2]. Auf klassischen Macintosh-Systemen wird der Type-Code TPIC verwendet. Historisch existierten auch .vda, .icb und .vst für spezifische Grafikkarten-Typen[2].
Technische Besonderheiten
Im Vergleich zu anderen 24-Bit-Formaten ist die TGA-Struktur simpel (aber es gibt auch Edge-Cases): Ein unkomprimiertes 24-Bit-TGA besteht aus dem 18-Byte-Header, optional einer Image ID (0-255 Bytes, Länge definiert in Byte 0 des Headers)[2], optional Color Map Data und den gepackten RGB-Bilddaten. BMP benötigt Zeilen-Padding auf 4-Byte-Grenzen, während TIFF und PNG als Metadaten-Container keine feste Position für Bilddaten haben.
Die Bildauflösungen von TGA-Dateien entsprechen traditionell den NTSC- und PAL-Videoformaten, da die ursprünglichen TARGA-Karten für professionelle Computer-Bildsynthese und Videobearbeitung konzipiert waren[1]. Andere Auflösungen sind aber natürlich möglich.
Einsatzbereiche
TGA wird nach wie vor in der Video- und Animationsindustrie verwendet, da die Zielausgabe primär auf Bildschirme und nicht hochauflösenden Druck[1] ausgerichtet ist. In der Videospiel-Entwicklung dient TGA häufig als Texturformat, da es Alpha-Kanäle unterstützt und unkomprimiert bzw. verlustfrei komprimiert arbeitet.
Bonus – TGA-Header-Parser
Weil der Aufbau so einfach ist und ich seit Ewigkeiten kein Python mehr gemacht habe (bitte um Verzeihung), anbei mal der (nicht ganz vollständige, siehe Kommentare) Parser für den Header:
#!/usr/bin/env python3
"""TGA Header Reader - Demo für TGA-Spec v2.0"""
import struct, sys
IMAGE_TYPES = {1: "Color-mapped", 2: "True-color", 3: "Grayscale",
10: "RLE True-color"} # ... (9, 11 analog)
def read_tga_header(path):
with open(path, 'rb') as f:
h = f.read(18)
if len(h) < 18: return print("Datei zu klein")
id_len, cm_type, img_type = h[0], h[1], h[2]
width, height = struct.unpack('")
read_tga_header(sys.argv[1])
Quellen
[1] True Vision TGA – Wikipedia
[2] Truevision Inc. (1991). Truevision TGA File Format Specification Version 2.0
TGA-Dateien umwandeln, öffnen und bearbeiten
Informationen zu TGA-Dateien
- Software zum TGA öffnen
- GIMP
- Software zum TGA bearbeiten
- GIMP
- MIME-Type für TGA
- image/x-targa
- image/x-tga
Keine Kommentare