Targa Image File
# Targa Image File

Das Targa Image File Format (kurz: TGA, übliche Dateiendung: .tga) ist ein Dateiformat zur Speicherung von Bildern. Targa steht für „Truevision Advanced Raster Graphics Array“.

Das Targa-Dateiformat wurde ursprünglich 1984 von der Firma Truevision entwickelt. 1989 wurde es erweitert, um Vorschaubilder, Werte für Alphakanal, Gammakorrektur und Text als Metainformationen beinhalten zu können.

Die Daten werden mit bis zu 32 Bit pro Pixel als Rastergrafik (englisch bitmap) entweder unkomprimiert oder mit einer Lauflängenkodierung verlustfrei komprimiert gespeichert.

## Spezifikation

| Format | .tga |
| - | - |
| Mögliche Farbtiefen (in Bit) | 8, 24, 32 |
| Alpha-Kanal | Ja (einer) |
| Ebenen | Nein |
| Komprimierung | Möglich |
| Verlustbehaftet | Nein |
| ICC-Profil | Nein |
| Pfade | Nein |

Alle Daten werden im Little-Endian-Format gespeichert. Das TGA-Format ist wie folgt strukturiert, wobei ein Wort aus 16 Bits besteht:

| Element | Element | Datentyp/Größe | Beschreibung |
| - | - | - | - |
| Dateikopf | Länge der Bild-ID | 1 Byte | bei Wert 0 entfällt die Bild-ID |
| Dateikopf | Farbpalettentyp | 1 Byte | 0 = keine Farbpalette 1 = Farbpalette vorhanden |
| Dateikopf | Bildtyp | 1 Byte | 0 = keine Bilddaten 1 = indiziert (Farbpalette) unkomprimiert 2 = RGB (24 oder 32 Bit) unkomprimiert 3 = monochrom unkomprimiert 9 = indiziert (Farbpalette) lauflängenkodiert 10 = RGB (24 Bit) lauflängenkodiert 11 = monochrom lauflängenkodiert |
| Dateikopf | Palettenbeginn | 1 Wort | Standardwert ist 0 |
| Dateikopf | Palettenlänge | 1 Wort | Anzahl der Farben in der Palette |
| Dateikopf | Größe (in Bits) eines Paletteneintrags | 1 Byte | typische Werte sind 15, 16, 24 und 32 |
| Dateikopf | X-Koordinate für Nullpunkt | 1 Wort | Standardwert ist 0 |
| Dateikopf | Y-Koordinate für Nullpunkt | 1 Wort | Standardwert ist 0 |
| Dateikopf | Bildbreite | 1 Wort | |
| Dateikopf | Bildhöhe | 1 Wort | |
| Dateikopf | Bits pro Bildpunkt | 1 Byte | gültige Werte sind 1, 8, 15, 16, 24 und 32 |
| Dateikopf | Bild-Attribut-Byte | 1 Byte | Bits 0-3: Anzahl der Attributbits pro Bildpunkt Bit 4: horizontale Lage des Nullpunkts (0 = links, 1 = rechts) Bit 5: vertikale Lage des Nullpunkts (0 = unten, 1 = oben) Bit 6-7: 0 |
| Bild-ID (optional) | Bild-ID (optional) | 0-255 Bytes | Bildidentifikator |
| Farbpalette (optional) | Farbpalette (optional) | 0-8192 Bytes | Palettendaten Reihenfolge der Elemente: BGR bzw. BGRA |
| Bilddaten (theoretisch optional) | Bilddaten (theoretisch optional) | variabel | Bilddaten mit Lauflängenkodierung oder unkomprimiert |
| $Entwicklerbereich^1$ | $Entwicklerbereich^1$ | variabel | Daten gemäß Entwicklerverzeichnis |
| $Entwicklerverzeichnis^2$ | Anzahl der Einträge | 1 Wort | |
| $Entwicklerverzeichnis^2$ | ID | 1 Wort | Werte von 32768-65535 sind reserviert |
| $Entwicklerverzeichnis^2$ | Offset | 1 Doppelwort | Datenposition im Entwicklerbereich (bezogen auf Dateibeginn) |
| $Entwicklerverzeichnis^2$ | Größe | 1 Doppelwort | Größe des Entwicklerfelds in Bytes |
| weitere Verzeichniseinträge (je 10 Bytes) |||
| $Metainformationen^2$ | Größe des Bereichs | 1 Wort | Wert: 495 |
| $Metainformationen^2$ | Autorname | 41 Bytes | null-terminierte Zeichenkette (max. 40 Zeichen) |
| $Metainformationen^2$ | Autorkommentar | 324 Bytes | 4 null-terminierte Zeichenketten (je max. 80 Zeichen) |
| $Metainformationen^2$ | Zeitstempel Monat | 1 Wort | |
| $Metainformationen^2$ | Zeitstempel Tag | 1 Wort | |
| $Metainformationen^2$ | Zeitstempel Jahr | 1 Wort | |
| $Metainformationen^2$ | Zeitstempel Stunde | 1 Wort | |
| $Metainformationen^2$ | Zeitstempel Minute | 1 Wort | |
| $Metainformationen^2$ | Zeitstempel Sekunde | 1 Wort | |
| $Metainformationen^2$ | Jobname | 41 Bytes | null-terminierte Zeichenkette (max. 40 Zeichen) |
| $Metainformationen^2$ | Jobstunde | 1 Wort | |
| $Metainformationen^2$ | Jobminute | 1 Wort | |
| $Metainformationen^2$ | Jobsekunde | 1 Wort | |
| $Metainformationen^2$ | Software-ID | 41 Bytes | null-terminierte Zeichenkette (max. 40 Zeichen) |
| $Metainformationen^2$ | Versionsnummer | 1 Wort | Versionsnummer * 100 |
| $Metainformationen^2$ | Softwareversion | 1 Byte | Zusatzzeichen zur Versionsnummer |
| $Metainformationen^2$ | Hintergrundfarbe | 1 Doppelwort | Standard ist 0, entspricht der Transparenzfarbe |
| $Metainformationen^2$ | Pixel-Seitenverhältnis | 1 Wort | Zähler des Bruchs |
| $Metainformationen^2$ | Pixel-Seitenverhältnis | 1 Wort | Nenner des Bruchs |
| $Metainformationen^2$ | Gamma-Wert | 1 Wort | Zähler des Bruchs |
| $Metainformationen^2$ | Gamma-Wert | 1 Wort | Nenner des Bruchs |
| $Metainformationen^2$ | Offset der Farbkorrekturtabelle | 1 Doppelwort | Offset (bezogen auf Dateibeginn) (0 = nicht vorhanden) |
| $Metainformationen^2$ | Offset des Thumbnails | 1 Doppelwort | Offset (bezogen auf Dateibeginn) (0 = nicht vorhanden) |
| $Metainformationen^2$ | Offset der Scan-Line-Tabelle | 1 Doppelwort | Offset (bezogen auf Dateibeginn) (0 = nicht vorhanden) |
| $Metainformationen^2$ | Attribut-Byte | 1 Byte | 0 = keine Attribut-Daten vorhanden 1 = undefinierte Attribut-Daten, kann ignoriert werden 2 = undefinierte Attribut-Daten, sollten aber behalten werden 3 = Attribut-Daten vorhanden 4 = pre-multiplied Attribut 5 - 127 = reserviert 128 - 255 = unbelegt |
| $Scan-Line-Tabelle^3$ | $Scan-Line-Tabelle^3$ | Bildhöhe * 1 Doppelwort | je Bildzeile ein Offset (bezogen auf Dateibeginn) |
| $Thumbnail^3$ | Breite | 1 Byte | Breite des Thumbnail (max. 64 Bildpunkte) |
| $Thumbnail^3$ | Höhe | 1 Byte | Höhe des Thumbnail (max. 64 Bildpunkte) |
| $Thumbnail^3$ | Bilddaten | variabel | Format entspricht dem ggf. unkomprimierten Originalbild |
| $Farbkorrektur-Tabelle^3$ | $Farbkorrektur-Tabelle^3$ | 256 * 4 Worte | ABGR Korrekturwerte für die Farbpaletteneinträge |
| $Dateifuß^4$ | Offset der Metainformationen | 1 Doppelwort | Offset (bezogen auf Dateibeginn) (0 = nicht vorhanden) |
| $Dateifuß^4$ | Offset des Entwicklerverzeichnisses | 1 Doppelwort | Offset (bezogen auf Dateibeginn) (0 = nicht vorhanden) |
| $Dateifuß^4$ | Signatur für Version 2.0 | 18 Bytes | null-terminierte Zeichenkette "TRUEVISION-XFILE." |

Anmerkungen: $^1optional$ ab Version 2.0, Entwicklerverzeichnis und Dateifuß erforderlich $^2optional$ ab Version 2.0, Dateifuß erforderlich $^3optional$ ab Version 2.0, Metainformationen und Dateifuß erforderlich $^4optional$ ab Version 2.0 (wenn vorhanden, dann immer die letzten 26 Bytes)

Aufgrund der Offset-Angaben müssen nach den Bilddaten die Bereiche der Version 2.0 nicht zwangsläufig aneinandergrenzen. Ferner ist die Reihenfolge der Bereiche zwar wie angegeben definiert, aber durch die Offset-Angaben sind auch andere Anordnungen möglich.

### Lauflängenkodierung

Bei der Lauflängenkodierung wird zeilenweise jeder Satz von Bildpunkten von einem zusätzlichen Steuerbyte angeführt. Ist das 8. Bit dieses Steuerbytes gesetzt, so handelt es sich um einen Wiederholungszähler, dessen Wert sich aus den unteren 7 Bits erhöht um 1 ergibt. Der nachfolgende Bildpunkt wird entsprechend oft wiederholt. Ist das 8. Bit des Steuerbytes 0, so handelt es sich um einen Datenzähler, dessen Wert sich ebenfalls aus den unteren 7 Bits erhöht um 1 ergibt. Er gibt an, wie viele Bildpunkte in diesem Satz folgen, bevor wieder ein Steuerbyte auftritt. Diese Bildpunkte werden 1:1 übernommen.

## Anwendung

Das TGA-Format wurde häufig in der Spieleindustrie verwendet. Ein bekanntes Beispiel für den Einsatz von Bildern im TGA-Format stellt id Software dar. Die frühen Veröffentlichungen der Firma nutzten dieses Format. Der Vorteil liegt im Alphakanal, welcher vom BMP-Format nicht unterstützt wird. Dazu kommt noch die Möglichkeit der verlustfreien Lauflängenkodierung, welche jedoch weniger Speicherplatz spart, als z. B. die kaum sichtbare Komprimierung einer JPG-Datei. Inzwischen wurde das TGA-Format allerdings in diesem Bereich fast vollständig von neueren Alternativen wie dem DirectDraw Surface (DDS) Format verdrängt.

Außerdem hat das Format im TV-Grafik-Bereich eine große Bedeutung. Es wurde ursprünglich für die ersten Targa-Videografik-Karten entwickelt und ist heute so etwas wie der größte gemeinsame Nenner der Grafikformate. Jedes Animationsprogramm und jeder Schriftgenerator kann Targa-Dateien verarbeiten. Das Format bietet maximale Qualität, da es entweder gar nicht oder aber verlustfrei komprimiert ist; außerdem eignet es sich durch die Unterstützung eines Alpha-Kanales hervorragend dazu, Grafiken, die über ein Video gelegt werden sollen, zu erstellen.

## Verbreitung

Das Targa-Image-File-Format hat es vor allem im Bereich der Bildbearbeitung nicht geschafft, sich gegenüber TIFF und anderen bekannten Formaten durchzusetzen. Targa bietet zu wenig Möglichkeiten bei der Kompression, Alphakanälen etc., die meisten Bildbearbeitungen unterstützen aber das Format.

Bekannte Programme, die Targa-Dateien öffnen oder abspeichern können :

| Programm | lesen | schreiben |
| - | - | - |
| Adobe Photoshop | ja | ja |
| Corel PaintShop Pro | ja | ja |
| Corel Photo-Paint | ja | ja |
| GIMP | ja | ja |
| Paint.NET | ja | ja |
| PaintTool SAI | ja | ja |
| PhotoFiltre | ja | o. A. |
| POV-Ray | nein | ja |
| IrfanView | ja | ja |
| Affinity Designer | ja | ja |

(Stand: August 2022)

Außerdem gehört TGA zu den Pixelbildformaten, die zum Beispiel das populäre Animationsprogramm Adobe Flash importieren und verwenden kann.

