Bei Verwendung der GD -Bibliothek von PHP zur Bildverarbeitung müssen wir manchmal einen transparenten Hintergrund für das Bild festlegen, z. Um diesen Effekt zu erzielen, können Sie hauptsächlich die beiden Funktionen verwenden: ImageColorallocatealpha () und ImageFill () .
In diesem Artikel wird ausführlich erläutert, wie diese beiden Funktionen verwendet werden und den vollständigen Beispielcode angibt.
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
Diese Funktion wird verwendet, um dem angegebenen Bild eine Farbe zuzuweisen und Transparenz zu setzen.
$ rot, $ green, $ blau : RGB-Farbwert (0-255)
$ alpha : Transparenzwert (0 ist vollständig undurchsichtig, 127 ist vollständig transparent)
Der zurückgegebene Wert ist ein Farbkennung, der in Funktionen wie ImageFill () verwendet werden kann.
bool imagefill ( resource $image , int $x , int $y , int $color )
Diese Funktion wird verwendet, um das Bild mit der angegebenen Farbe zu füllen.
$ x, $ y : Füllen Sie die Koordinaten des Startpunkts aus
$ color : Die zu verwendende Farbkennung
In Kombination mit ImageColorallocatealpha () können wir die gesamte Leinwand mit transparenten Farben füllen.
Im Folgenden finden Sie einen vollständigen PHP -Code, der zeigt, wie die GD -Bibliothek verwendet wird, um ein 200x200 PNG -Bild mit transparentem Hintergrund zu generieren und einen roten Kreis in der Mitte zu zeichnen.
<?php
// Erstellen a 200x200 Wahres Farbbild
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// Schalten Sie den Farbmischmodus aus,Speichern aktivieren alpha Kanalinformationen
imagealphablending($image, false);
imagesavealpha($image, true);
// Weisen Sie eine völlig transparente Farbe zu
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
// Füllen Sie die gesamte Leinwand mit transparenten Farben
imagefill($image, 0, 0, $transparent);
// Rot zuweisen(undurchsichtig)
$red = imagecolorallocate($image, 255, 0, 0);
// Zeichne einen roten Kreis in der Mitte
imagefilledellipse($image, $width / 2, $height / 2, 100, 100, $red);
// Das Ausgangsbild ist PNG
header('Content-Type: image/png');
imagepng($image);
// Freier Speicher
imagedestroy($image);
?>
1 ?? Bildressourcen erstellen <br> Wir verwenden ImagecrreatTueColor (), um eine echte Farb -Leinwand zu erstellen.
2 ?? Aktivieren Sie den transparenten Hintergrund
GD speichert standardmäßig keine Alpha -Informationen und erfordert:
imagealphablending($image, false);
imagesavealpha($image, true);
3 ?? Zuweisen und mit transparenten Farben füllen <br> Verwenden Sie ImageColorallocatealpha (), um eine vollständig transparente Farbe (Alpha = 127) zu erstellen, und verwenden Sie dann ImageFill (), um die gesamte Leinwand zu füllen.
4 ?? Zeichnen Sie Inhalte <br> Hier haben wir einen roten Kreis gezeichnet, den Sie in Text, Zeilen, Bilder usw. ändern können.
5 ?? Ausgabebild <br> Verwenden Sie Header ('Inhaltstyp: Image/PNG'), um den Ausgabetyp festzulegen, und verwenden Sie dann ImagePng (), um in den Browser auszugeben, oder übergeben Sie den Dateinamen, um auf der Festplatte zu speichern, zum Beispiel:
imagepng($image, '/path/to/save/output.png');
? Speichern in Datei <br> <br> Wenn Sie das Bild auf dem Server speichern möchten, können Sie dies tun:
imagepng($image, 'https://m66.net/images/output.png');
? Wechseln Sie zu GIF
Obwohl GIF auch transparente Hintergründe unterstützt, ist die transparente Implementierungsmethode unterschiedlich. Sie können imageColortrArsparent () verwenden.
? Achten Sie auf Berechtigungen <br> Stellen Sie beim Speichern im Serververzeichnis sicher, dass der PHP -Prozess Schreibberechtigungen enthält.