Start · Sprachen · PHP · Referenz · imagecolortransparent

imagecolortransparent

Funktion

Legt eine Farbe in einem GD-Bild als transparent fest oder gibt die aktuell transparente Farbe zurück.

seit PHP 4.0.0 Kategorie: image

Signatur

imagecolortransparent(GdImage $image, int $color = -1): int

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

Typ
int
Beschreibung
Gibt den Farbindex der aktuell transparenten Farbe zurück. Ist keine transparente Farbe gesetzt, wird -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);
Transparenter Farbindex: 0

// 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.