Signatur
Beschreibung
imagecolorresolvealpha() durchsucht die Farbtabelle eines GD-Bildes nach einem exakten Treffer für die angegebene RGBA-Farbe (Rot, Grün, Blau, Alpha). Wird die Farbe gefunden, liefert die Funktion deren Index zurück. Existiert die Farbe nicht in der Palette, wird die nächste ähnliche Farbe anhand eines Distanzmaßes ermittelt und deren Index zurückgegeben.
Diese Funktion ist besonders nützlich bei palettenbasierten Bildern (erzeugt mit imagecreate()), wo die Anzahl der verfügbaren Farben begrenzt ist. Im Gegensatz zu imagecolorexactalpha(), das bei Nichtvorhandensein -1 zurückgibt, liefert imagecolorresolvealpha() immer einen gültigen Index — analog zu imagecolorresolve(), jedoch mit Alpha-Unterstützung.
Der Alpha-Wert reicht von 0 (vollständig opak) bis 127 (vollständig transparent). Diese Funktion kombiniert intern das Verhalten von imagecolorexactalpha() und imagecolorclosestalpha() in einem einzigen Aufruf.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das GD-Bildobjekt, das mit Funktionen wie imagecreate() oder imagecreatefromjpeg() erstellt wurde. |
|
| $red Pflicht | int | Rotwert der Farbe, ein Ganzzahlwert zwischen 0 und 255. |
|
| $green Pflicht | int | Grünwert der Farbe, ein Ganzzahlwert zwischen 0 und 255. |
|
| $blue Pflicht | int | Blauwert der Farbe, ein Ganzzahlwert zwischen 0 und 255. |
|
| $alpha Pflicht | int | Alpha-Transparenzwert zwischen 0 (vollständig opak) und 127 (vollständig transparent). |
Rückgabewert
Beispiele
Farbindex mit Alpha auflösen
<?php
// Palettenbasiertes Bild erstellen
$image = imagecreate(200, 200);
// Hintergrundfarbe definieren (erste Farbe = Hintergrund)
$background = imagecolorallocate($image, 255, 255, 255);
// Eine halbtransparente Rotfarbe allokieren
$red = imagecolorallocatealpha($image, 255, 0, 0, 64);
// Index der exakt gleichen oder nächstliegenden Farbe ermitteln
$index = imagecolorresolvealpha($image, 255, 0, 0, 64);
echo "Index der aufgelösten Farbe: " . $index;
imagedestroy($image);
?>
Fallback auf nächste Farbe wenn exakte nicht vorhanden
<?php
// Palettenbasiertes Bild erstellen
$image = imagecreate(100, 100);
// Nur eine Farbe registrieren
$weiß = imagecolorallocate($image, 255, 255, 255);
$blau = imagecolorallocatealpha($image, 0, 0, 200, 50);
// Nicht registrierte, aber ähnliche Farbe auflösen
// Exakt (0, 0, 210, 50) existiert nicht, wird aber nächstliegendem Index zugewiesen
$index = imagecolorresolvealpha($image, 0, 0, 210, 50);
echo "Aufgelöster Index (nächste Farbe): " . $index . "\n";
// Zum Vergleich: imagecolorexactalpha gibt -1 zurück
$exakt = imagecolorexactalpha($image, 0, 0, 210, 50);
echo "Exakter Index (nicht gefunden): " . $exakt . "\n";
imagedestroy($image);
?>
// Wichtig · Fallstricke
Hinweis zur Bildart: Diese Funktion arbeitet primär mit palettenbasierten Bildern (imagecreate()). Bei True-Color-Bildern (imagecreatetruecolor()) ist das Konzept eines Farbindex nicht gleichwertig anwendbar, da True-Color-Bilder keine begrenzte Palette verwenden.
Alpha-Transparenz aktivieren: Damit die Transparenz korrekt gerendert wird, sollte bei palettenbasierten Bildern imagecolortransparent() gesetzt oder imagesavealpha() bei PNG-Ausgaben verwendet werden.
Reihenfolge der Palette: Da die Funktion bei Nichtvorhandensein einer Farbe die nächstliegende zurückgibt, kann das Ergebnis von der Anzahl und Zusammensetzung der bereits allozierten Farben abhängen. Für vorhersehbare Ergebnisse sollte imagecolorallocatealpha() vor dem Aufruf genutzt werden.