In PHP wird die Funktion imageColorallocatealpha () verwendet, um Bilder mit Farbe mit Alpha (Transparenz-) Informationen zuzuweisen. Es ist jedoch zu beachten, dass diese Funktion. Wenn Sie versuchen, es auf einem Nicht-T-Confecolor-Bild (ein von Imagecreate () erstellter Palettenbild) zu verwenden, können Sie auf unerwartetes Verhalten oder Fehler stoßen.
Wie kann man die Funktion von ImageColorallocatealpha () indirekt auf Nicht-Trauende-Bildern verwenden? Dieser Artikel führt Sie durch seine Prinzipien und liefert praktische Code -Beispiele.
Palettenbasierter Bild
Verwenden Sie bis zu 256 Farben, jede Farbe wird in der Palette gespeichert. Erstellt von ImageCreate () . Geeignet für einfache Grafiken, unterstützt jedoch keine echten transparenten Kanäle.
Truecolor -Bild <br> Jedes Pixel speichert unabhängig voneinander die Werte von RGB (rot, grün, blau) und Alpha (Transparenz). Erstellt von ImageCrreatTueColor () . Geeignet für komplexe Grafiken und Szenarien, in denen Transparenz erforderlich ist.
Da ImageColorallocatealpha () einen Alpha -Kanal umfasst, müssen wir wirksam ein Truecolor -Bild benötigen.
Wenn Sie zu Beginn ein Palettenbild mit ImageCreate () erstellt haben, können Sie es in ein Truecolor -Bild konvertieren, bevor Sie sich imageColorallocatealpha () verwenden.
<?php
// Erstellen Sie ein Palettenbild
$paletteImage = imagecreate(200, 200);
$white = imagecolorallocate($paletteImage, 255, 255, 255);
$black = imagecolorallocate($paletteImage, 0, 0, 0);
// Palettenbilder umwandeln in truecolor Bild
$truecolorImage = imagecreatetruecolor(imagesx($paletteImage), imagesy($paletteImage));
imagecopy($truecolorImage, $paletteImage, 0, 0, 0, 0, imagesx($paletteImage), imagesy($paletteImage));
// Weisen Sie eine Farbe mit Transparenz zu
$transparentRed = imagecolorallocatealpha($truecolorImage, 255, 0, 0, 64); // 64 Zeigt durchscheinend
// Verwenden Sie diese Farbe, um ein Füllrechteck zu zeichnen
imagefilledrectangle($truecolorImage, 50, 50, 150, 150, $transparentRed);
// Einstellungen speichern als PNG(Transparenz unterstützen)
header('Content-Type: image/png');
imagepng($truecolorImage);
// Reinigen Sie den Speicher
imagedestroy($paletteImage);
imagedestroy($truecolorImage);
?>
ImageCrreatetRueColor () erstellt standardmäßig Bilder mit einem völlig schwarzen Hintergrund. Wenn Sie den Hintergrund des ursprünglichen Palettenbildes beibehalten möchten, müssen Sie imageCopy () verwenden.
Der Ausgang befindet sich im PNG -Format, um den Alpha -Kanal zu speichern (JPEG unterstützt keine Transparenz).
Der Transparenzwert Alpha reicht von 0 (vollständig undurchsichtig) bis 127 (vollständig transparent).
<?php
$image = imagecreatefrompng('https://m66.net/images/sample.png');
$semiTransparentBlue = imagecolorallocatealpha($image, 0, 0, 255, 80);
imagefilledellipse($image, 100, 100, 80, 80, $semiTransparentBlue);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>