Signatur
Beschreibung
imagecreatefromtga() liest eine TGA-Datei (Truevision TARGA) vom Dateisystem und erzeugt daraus ein GD-Bildobjekt, mit dem weitergearbeitet werden kann. Das zurückgegebene GdImage-Objekt kann anschließend mit allen gängigen GD-Funktionen wie imagecopyresampled(), imagepng() oder imagejpeg() bearbeitet und gespeichert werden.
Das TGA-Format (auch TARGA genannt) wird häufig in der Spieleentwicklung und im Multimediabereich eingesetzt, da es verlustfreie Kompression sowie einen Alphakanal unterstützt. Die Funktion unterstützt dabei gängige TGA-Varianten, darunter unkomprimierte und RLE-komprimierte Dateien.
Die Funktion wurde offiziell in PHP 8.3 als öffentliche API eingeführt; in früheren Versionen war der TGA-Support zwar intern in der GD-Bibliothek vorhanden, jedoch nicht über eine eigene PHP-Funktion zugänglich.
Nach erfolgreicher Nutzung des zurückgegebenen Bildobjekts empfiehlt es sich, den Speicher mit imagedestroy() freizugeben (obwohl dies ab PHP 8.0 durch die automatische Zerstörung beim Garbage-Collecting weniger kritisch ist).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur TGA-Bilddatei, die geladen werden soll. Es kann ein absoluter oder relativer Dateipfad angegeben werden. URL-Wrapper (z. B. http://) werden in der Regel nicht unterstützt. |
Rückgabewert
GdImage-Objekt zurück, das die geladene Bilddatei repräsentiert. Im Fehlerfall (z. B. Datei nicht gefunden, ungültiges Format) wird false zurückgegeben.Beispiele
TGA-Bild laden und als PNG ausgeben
<?php
// TGA-Datei laden
$image = imagecreatefromtga('/pfad/zum/bild.tga');
if ($image === false) {
die('Fehler: TGA-Datei konnte nicht geladen werden.');
}
// Bild als PNG an den Browser senden
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
TGA-Bild in JPEG konvertieren und speichern
<?php
$eingabe = '/bilder/spielfigur.tga';
$ausgabe = '/bilder/spielfigur.jpg';
$image = imagecreatefromtga($eingabe);
if ($image === false) {
echo 'Fehler: Konnte TGA-Datei nicht öffnen: ' . $eingabe;
exit(1);
}
// Breite und Höhe des Bildes ermitteln
$breite = imagesx($image);
$hoehe = imagesy($image);
echo "Bildgröße: {$breite} x {$hoehe} Pixel\n";
// Als JPEG mit Qualität 90 speichern
if (imagejpeg($image, $ausgabe, 90)) {
echo "Erfolgreich als JPEG gespeichert: {$ausgabe}\n";
} else {
echo "Fehler beim Speichern des JPEG.\n";
}
imagedestroy($image);
// Wichtig · Fallstricke
Verfügbarkeit: imagecreatefromtga() ist erst ab PHP 8.3.0 als öffentliche Funktion verfügbar. In älteren PHP-Versionen existiert diese Funktion nicht, auch wenn die GD-Bibliothek intern TGA unterstützt.
Sicherheitshinweis: Wird der Dateiname aus Benutzereingaben bezogen, muss dieser unbedingt validiert und/oder auf ein sicheres Verzeichnis begrenzt werden (z. B. mit realpath() und einer Präfixprüfung), um Path-Traversal-Angriffe (../../../etc/passwd) zu verhindern.
Alphakanal: TGA-Dateien können einen Alphakanal enthalten. Soll dieser beim Weiterverarbeiten erhalten bleiben (z. B. bei PNG-Ausgabe), muss imagesavealpha($image, true) aufgerufen werden, bevor das Bild ausgegeben wird.