Bei der Durchführung der Bildverarbeitung in PHP ist ImageColorallocatealpha () eine sehr wichtige Funktion. Es weist nicht nur Farben zu, sondern steuert auch die Transparenz. Viele Entwickler stoßen jedoch bei der Verwendung abnormaler Bildtransparenzprobleme, häufig aufgrund der richtigen.
In diesem Artikel wird dieses Problem im Detail analysiert, um die Funktion "ImageColorallocatealpha () korrekt zu verwenden.
ImageColorallocatealpha () wird verwendet, um Farben mit Transparenz zu GD-bibliotheksbasierten Bildern zuzuweisen.
Die grundlegende Syntax ist wie folgt:
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
Parameterbeschreibung:
$ bild : Eine Bildressource, die von Imagecreate () oder ImageCrreatetRueColor () erstellt wurde.
$ rot , $ green , $ blau : RGB -Farbkomponenten, Bereich 0–255.
$ alpha : Transparenzwert, Bereich 0–127 .
Hinweis: Alpha ist nicht 0–255, sondern 0 (vollständig undurchsichtig) bis 127 (vollständig transparent) .
Der erste Fehler, den viele Entwickler machen, ist: Sie denken, dass der Wert von Alpha 0–255 wie RGB beträgt, aber sie füllen 255 direkt in ihn ein.
Schauen wir uns ein Beispiel an:
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 255); // Fehler
Das hier setzende Alpha ist 255, während die GD -Bibliothek nur bis zu 127 akzeptiert. Da sie außerhalb der Reichweite ist, wird GD sie als 127 behandeln, was zu einer vollständigen Transparenz führt.
Richtiges Schreiben:
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 0); // Opazität rot
$semi_transparent = imagecolorallocatealpha($img, 255, 0, 0, 64); // Durchscheinend rot
Weil die GD -Bibliothek den Alpha -Wert auf diese Weise versteht:
0: total undurchsichtig
127: vollständig transparent
Wenn Sie 255 ausfüllen, verwendet GD Min ($ alpha, 127) , was bedeutet, dass es als maximale Transparenz angesehen wird. Dies führt zu:
Ich wollte ursprünglich rot zeichnen, aber ich konnte es nicht sehen.
Ich wollte ursprünglich durchscheinend zeichnen, aber es stellte sich heraus, dass es völlig transparent war.
? Denken Sie daran: Der Alpha -Bereich beträgt 0–127, nicht 0–255.
Wenn Sie Transparenzdesigns im Bereich 0–255 (z. B. CSS oder RGBA Common -Werte) verwenden, müssen Sie eine Konvertierung durchführen:
$css_alpha = 128; // Annahme 0–255 äußern
$gd_alpha = intval(127 * (255 - $css_alpha) / 255); // Konvertieren zu GD Gebrauchtwert
Dadurch wird sichergestellt, dass Sie eine konsistente Transparenz in PHP haben.
Lassen Sie uns diese mit einem vollständigen Beispiel zusammenziehen: