Aktueller Standort: Startseite> Neueste Artikel> Wie setze ich einen transparenten Hintergrund für ein Bild mithilfe von ImageColorallocatealpha () und ImageFill () fest?

Wie setze ich einen transparenten Hintergrund für ein Bild mithilfe von ImageColorallocatealpha () und ImageFill () fest?

M66 2025-05-23

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.

Funktion Einführung

ImageColorallocatealpha ()

 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.

Bildfill ()

 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.

Praktisches Beispiel: Erstellen Sie ein PNG -Bild mit transparentem Hintergrund

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);
?>

Code analysieren

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');

Tipps

? 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.