Signatur
Beschreibung
imagealphablending() schaltet den sogenannten Alpha-Blending-Modus für ein GD-Bildobjekt ein oder aus. Dieser Modus beeinflusst, wie neu gezeichnete Pixel mit dem bereits vorhandenen Bildinhalt kombiniert werden.
Ist der Modus aktiviert (true), werden halbtransparente Farben mit dem Hintergrund vermischt (composited). Das Ergebnis ist eine optisch korrekte Überlagerung, wie man sie aus Grafikprogrammen kennt. Ist der Modus deaktiviert (false), werden Pixel direkt überschrieben – einschließlich ihres Alpha-Werts. Das ist notwendig, wenn man echte Transparenz in einem PNG bewahren möchte.
Typisches Anwendungsmuster: Für True-Color-Bilder mit Transparenz (z. B. ein neues PNG) sollte man zuerst imagealphablending($img, false) setzen und anschließend imagesavealpha($img, true) aufrufen, damit der volle Alpha-Kanal beim Speichern erhalten bleibt. Wird dagegen auf ein bestehendes Bild gezeichnet und soll Transparenz visuell korrekt eingeblendet werden, ist true sinnvoll.
Hinweis: Bei Palette-Bildern (nicht True-Color) hat diese Funktion keine Wirkung, da diese keinen Alpha-Kanal im True-Color-Sinne unterstützen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das GD-Bildobjekt, dessen Blending-Modus geändert werden soll. Üblicherweise durch imagecreatetruecolor(), imagecreatefrompng() o. Ä. erzeugt. |
|
| $enable Pflicht | bool | true aktiviert Alpha-Blending (Farben werden mit dem Hintergrund gemischt); false deaktiviert es (Pixel werden direkt mit Alpha-Wert überschrieben, notwendig für echte PNG-Transparenz). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das Bild kein True-Color-Bild ist).Beispiele
Transparentes PNG mit Alpha-Kanal erzeugen
<?php
// True-Color-Bild erstellen
$img = imagecreatetruecolor(200, 100);
// Alpha-Blending deaktivieren, damit echter Alpha-Kanal genutzt wird
imagealphablending($img, false);
// Alpha-Kanal beim Speichern erhalten
imagesavealpha($img, true);
// Hintergrund vollständig transparent füllen (Alpha = 127 = voll transparent)
$transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
imagefill($img, 0, 0, $transparent);
// Halbtransparentes rotes Rechteck zeichnen (Alpha = 64 = ~50 % transparent)
$red = imagecolorallocatealpha($img, 255, 0, 0, 64);
imagefilledrectangle($img, 20, 20, 180, 80, $red);
// Als PNG speichern
imagepng($img, 'output.png');
imagedestroy($img);
echo 'Transparentes PNG gespeichert.';
?>
Bild mit aktivem Alpha-Blending überlagern
<?php
// Hintergrundbild laden
$background = imagecreatefrompng('background.png');
// Overlay-Bild laden
$overlay = imagecreatefrompng('overlay.png');
// Alpha-Blending auf dem Hintergrundbild aktivieren,
// damit das Overlay korrekt eingeblendet wird
imagealphablending($background, true);
$overlayW = imagesx($overlay);
$overlayH = imagesy($overlay);
// Overlay auf Hintergrund kopieren (mit Blending)
imagecopy($background, $overlay, 0, 0, 0, 0, $overlayW, $overlayH);
// Ergebnis speichern
imagesavealpha($background, true);
imagepng($background, 'result.png');
imagedestroy($background);
imagedestroy($overlay);
echo 'Overlay erfolgreich eingeblendet.';
?>
// Wichtig · Fallstricke
Häufiger Fehler: Wer ein transparentes PNG erzeugen möchte, vergisst oft, imagealphablending($img, false) vor dem Zeichnen aufzurufen. Ohne diese Einstellung wird der Alpha-Wert mit dem (standardmäßig schwarzen) Hintergrund vermischt, und die Transparenz geht verloren.
Reihenfolge beachten: imagealphablending() und imagesavealpha() müssen vor imagefill() und anderen Zeichenoperationen aufgerufen werden, damit die Einstellungen wirksam sind.
Die Funktion wirkt nur auf True-Color-Bilder. Bei Palette-Bildern (erstellt mit imagecreate()) gibt sie false zurück und hat keine Wirkung.