Signatur
Beschreibung
imagecreatetruecolor() erzeugt eine neue, leere Bildressource im True-Color-Modus (24-Bit, d. h. bis zu 16 Millionen Farben). Dies ist der bevorzugte Weg, um neue Bilder in GD zu erstellen, wenn hohe Farbtiefe erforderlich ist – im Gegensatz zu imagecreate(), das nur eine Palette mit maximal 256 Farben unterstützt.
Das neu erstellte Bild ist standardmäßig schwarz (RGB 0, 0, 0) und nicht transparent. Möchte man einen transparenten Hintergrund, muss man anschließend imagesavealpha() und imagefill() bzw. imagefilledrectangle() in Kombination mit imagecolorallocatealpha() verwenden.
Typische Einsatzgebiete sind das dynamische Erzeugen von Grafiken, das Bearbeiten oder Skalieren von hochgeladenen Bildern sowie das Erstellen von Thumbnails. Mit True-Color-Bildern lassen sich auch Foto-Qualitätsverläufe, Anti-Aliasing und Transparenz korrekt darstellen.
Nach der Arbeit mit dem Bild sollte die Ressource mit imagedestroy() freigegeben werden, um Speicher zu vermeiden – ab PHP 8.0 wird das Bild jedoch automatisch als GdImage-Objekt verwaltet und beim Verlassen des Scopes freigegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $width Pflicht | int | Die Breite des neuen Bildes in Pixeln. Muss ein positiver ganzzahliger Wert sein. | |
| $height Pflicht | int | Die Höhe des neuen Bildes in Pixeln. Muss ein positiver ganzzahliger Wert sein. |
Rückgabewert
GdImage-Objekt zurück (vor PHP 8.0 eine Ressource vom Typ gd). Im Fehlerfall (z. B. ungültige Dimensionen oder unzureichender Speicher) wird false zurückgegeben.Beispiele
Einfaches True-Color-Bild erzeugen und als PNG ausgeben
<?php
// Neues True-Color-Bild mit 200x100 Pixeln erstellen
$bild = imagecreatetruecolor(200, 100);
// Hintergrundfarbe (blau) zuweisen
$blau = imagecolorallocate($bild, 30, 100, 200);
imagefill($bild, 0, 0, $blau);
// Weißen Text auf das Bild schreiben
$weiss = imagecolorallocate($bild, 255, 255, 255);
imagestring($bild, 5, 40, 40, 'Hallo PHP!', $weiss);
// PNG direkt an den Browser senden
header('Content-Type: image/png');
imagepng($bild);
imagedestroy($bild);
True-Color-Bild mit transparentem Hintergrund erstellen
<?php
// True-Color-Bild mit Transparenz erzeugen
$bild = imagecreatetruecolor(300, 150);
// Alpha-Speicherung aktivieren
imagealphablending($bild, false);
imagesavealpha($bild, true);
// Vollständig transparente Farbe zuweisen (Alpha = 127 = vollständig transparent)
$transparent = imagecolorallocatealpha($bild, 0, 0, 0, 127);
imagefill($bild, 0, 0, $transparent);
// Roten Kreis mit 50% Transparenz zeichnen
imagealphablending($bild, true);
$rot = imagecolorallocatealpha($bild, 220, 50, 50, 63);
imagefilledellipse($bild, 150, 75, 200, 100, $rot);
// Als PNG speichern
header('Content-Type: image/png');
imagepng($bild);
imagedestroy($bild);
Hochgeladenes Bild skalieren mit imagecreatetruecolor
<?php
// Quelldatei laden (z. B. hochgeladenes JPEG)
$quelle = imagecreatefromjpeg('/pfad/zum/original.jpg');
$origBreite = imagesx($quelle);
$origHoehe = imagesy($quelle);
// Thumbnail-Größe berechnen (max. 150px Breite)
$maxBreite = 150;
$skalierung = $maxBreite / $origBreite;
$neueBreite = (int)($origBreite * $skalierung);
$neueHoehe = (int)($origHoehe * $skalierung);
// Leeres True-Color-Zielbild erstellen
$thumb = imagecreatetruecolor($neueBreite, $neueHoehe);
// Bild in True-Color-Qualität skalieren
imagecopyresampled($thumb, $quelle, 0, 0, 0, 0, $neueBreite, $neueHoehe, $origBreite, $origHoehe);
// Thumbnail speichern
imagejpeg($thumb, '/pfad/zum/thumbnail.jpg', 85);
// Ressourcen freigeben
imagedestroy($quelle);
imagedestroy($thumb);
echo 'Thumbnail erfolgreich erstellt: ' . $neueBreite . 'x' . $neueHoehe . ' Pixel';
// Wichtig · Fallstricke
Speicher: Bei sehr großen Bildern kann imagecreatetruecolor() erheblichen Arbeitsspeicher beanspruchen. Faustregel: Breite × Höhe × 4 Byte. Bei z. B. 4000×3000 Pixeln wären das ca. 48 MB. Das PHP-Speicherlimit (memory_limit) sollte entsprechend angepasst sein.
Rückgabewert prüfen: Es empfiehlt sich, den Rückgabewert auf false zu prüfen, da die Funktion bei ungültigen Dimensionen (0 oder negativ) oder Speichermangel fehlschlägt.
GD-Erweiterung erforderlich: Die GD-Erweiterung muss in PHP aktiviert sein (extension=gd in der php.ini). Mit phpinfo() oder extension_loaded('gd') lässt sich dies prüfen.
Unterschied zu imagecreate(): imagecreate() erzeugt ein palettenbasiertes Bild mit maximal 256 Farben. Für Fotos, Verläufe und alles mit mehr als 256 Farben sollte stets imagecreatetruecolor() verwendet werden.