Signatur
Beschreibung
imagecolortransparent() definiert eine bestimmte Farbe eines GD-Bildes als transparent. Wird ein Pixel in dieser Farbe gerendert, erscheint es beim Ausgeben des Bildes durchsichtig – vorausgesetzt, das Bildformat unterstützt Transparenz (z. B. PNG oder GIF).
Der Farbindex $color muss zuvor mit imagecolorallocate() erstellt worden sein. Wird kein zweites Argument übergeben, gibt die Funktion lediglich den aktuell als transparent gesetzten Farbindex zurück, ohne eine Änderung vorzunehmen.
Diese Funktion arbeitet mit Index-basierten Transparenz und eignet sich daher besonders für Paletten-Bilder (GIF, PNG-8). Bei True-Color-PNG-Bildern sollte stattdessen mit imagealphablending() und imagesavealpha() gearbeitet werden, um volle Alpha-Kanal-Transparenz zu nutzen.
Gibt es keine transparente Farbe, liefert die Funktion -1 zurück. Ein erneuter Aufruf mit einem neuen Farbindex überschreibt die bisherige transparente Farbe.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Ein GD-Bild-Objekt, erzeugt z. B. mit imagecreate() oder imagecreatetruecolor(). |
|
| $color | int | -1 | Ein Farbindex, der zuvor mit imagecolorallocate() erzeugt wurde und als transparent gesetzt werden soll. Wird der Parameter weggelassen, erfolgt nur eine Abfrage des aktuellen Wertes. |
Rückgabewert
-1 zurückgegeben.Beispiele
Transparente Hintergrundfarbe in einem GIF-ähnlichen Palettenbild setzen
<?php
// Palettenbild erstellen (geeignet für transparente Farbe per Index)
$bild = imagecreate(200, 100);
// Hintergrundfarbe allokieren – erste Allokation = Hintergrund
$weiss = imagecolorallocate($bild, 255, 255, 255);
// Schriftfarbe allokieren
$schwarz = imagecolorallocate($bild, 0, 0, 0);
// Weiß als transparente Farbe definieren
imagecolortransparent($bild, $weiss);
// Text ins Bild schreiben
imagestring($bild, 5, 10, 40, 'Hallo Welt', $schwarz);
// Als PNG ausgeben
header('Content-Type: image/png');
imagepng($bild);
imagedestroy($bild);
Aktuell transparente Farbe abfragen
<?php
$bild = imagecreate(100, 50);
$rot = imagecolorallocate($bild, 255, 0, 0);
$gruen = imagecolorallocate($bild, 0, 255, 0);
// Rot als transparent setzen
imagecolortransparent($bild, $rot);
// Aktuell transparenten Farbindex abfragen (kein zweites Argument)
$transparent = imagecolortransparent($bild);
echo 'Transparenter Farbindex: ' . $transparent;
// Ausgabe: Transparenter Farbindex: 0 (da $rot zuerst allokiert wurde)
imagedestroy($bild);
// Wichtig · Fallstricke
Wichtig: imagecolortransparent() funktioniert zuverlässig nur bei Paletten-Bildern, die mit imagecreate() erzeugt wurden. Bei True-Color-Bildern (imagecreatetruecolor()) empfiehlt sich die Kombination aus imagealphablending($bild, false) und imagesavealpha($bild, true) für echten Alpha-Kanal.
JPEG unterstützt keine Transparenz – ein Aufruf dieser Funktion hat beim späteren Speichern als JPEG keine sichtbare Wirkung.
Ab PHP 8.0 erwartet der erste Parameter ein GdImage-Objekt; ältere Versionen verwendeten eine resource.