Start · Sprachen · PHP · Referenz · imagecreatetruecolor

imagecreatetruecolor

Funktion

Erstellt ein neues Echtfarbenbild (True-Color) mit der angegebenen Breite und Höhe und gibt ein <code>GdImage</code>-Objekt zurück.

seit PHP 4.0.6 Kategorie: image

Signatur

imagecreatetruecolor(int $width, int $height): GdImage|false

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

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein 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);
(PNG-Bild mit blauem Hintergrund und weißem Text "Hallo PHP!")

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);
(PNG-Bild mit transparentem Hintergrund und einem halbtransparenten roten Kreis)

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';
Thumbnail erfolgreich erstellt: 150x100 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.