In PHP stoßen wir bei Verwendung der GD -Bibliothek zum Verarbeiten von Bildern auf ein Problem: Wenn Sie die Funktion "ImageColorallocatealpha" aufrufen, um den Bildhintergrund transparent zu setzen, wird nach dem Speichern des Bildes mithilfe von ImagePng () den Hintergrund des Bildes schwarz. Diese Frage verwirrt häufig Entwickler, insbesondere wenn es um PNG -Bilder mit transparenten Hintergründen geht. In diesem Artikel wird ausführlich erklärt, warum dies geschieht und eine Lösung angibt.
Die GD -Bibliothek ist eine Standardbibliothek für die Bildverarbeitung in PHP. Es unterstützt die Erzeugung und Modifikation einer Vielzahl von Bildformaten, einschließlich JPEG, PNG, GIF usw., um PNG -Bilder mit Transparenz zu erzeugen. Entwickler verwenden normalerweise imageColorallocatealpha , um dem Bild eine transparente Farbe zuzuweisen. Obwohl wir erwarten, dass der Bildhintergrund transparent ist, haben PNG -Bilder häufig durch ImagePng () einen schwarzen Hintergrund.
Die Grundursache des Problems liegt in der Art und Weise, wie die GD -Bibliothek und das PNG -Format behandelt werden. Das PNG -Format unterstützt Transparenz, und die Implementierung von Transparenz wird durch einen Mechanismus erreicht, der als Alpha -Kanal bezeichnet wird. Die Funktion "ImageColorallocatealpha" ermöglicht es uns, einen Transparenzwert anzugeben, der den Grad der Transparenz der Farbe steuert. Der Wert der Transparenz liegt normalerweise zwischen 0 und 127, wobei 0 insgesamt undurchsichtigen und 127 eine vollständige Transparenz darstellen.
Die GD -Bibliothek setzt jedoch nicht automatisch den transparenten Hintergrund des PNG -Bildes. Beim Speichern von PNG -Bildern ermöglicht die Funktion imagePng () standardmäßig keine transparente Hintergrundunterstützung. Selbst wenn wir transparente Farben verwenden und der transparente Hintergrund des Bildes nicht korrekt konfiguriert ist, hat das generierte PNG -Bild einen schwarzen Hintergrund.
Um dieses Problem zu lösen, müssen wir sicherstellen, dass der transparente Hintergrund beim Generieren von PNG -Bildern aktiviert ist. Die Bildsparungsoptionen können über den dritten Parameter der ImagePng () -Funktion gesteuert werden, und die Funktionen für bildlichische Pilze () und BilderSavealpha () müssen verwendet werden, um die Verarbeitung der Bildtransparenz festzulegen.
Hier ist ein Beispielcode für eine Lösung:
<?php
// Erstellen Sie ein echtes Farbbild
$image = imagecreatetruecolor(200, 200);
// Weisen Sie eine transparente Farbe zu
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
// Füllen Sie den Hintergrund mit transparent
imagefill($image, 0, 0, $transparent);
// Offenalpha blending
imagealphablending($image, false);
// Transparenzinformationen speichern
imagesavealpha($image, true);
// Zeichnen Sie einige Grafiken,Wie ein rotes Rechteck
$red = imagecolorallocate($image, 255, 0, 0);
imagefilledrectangle($image, 50, 50, 150, 150, $red);
// Die Ausgabe istPNGFormat
imagepng($image, 'output.png');
// Zerstöre Bildressourcen
imagedestroy($image);
?>
Erstellen Sie ein Bild : Verwenden Sie die Funktion imageCrreatTueColor (), um ein echtes Farbbild von 200x200 zu erstellen.
Transparente Farben zuweisen : ImageColorallocatealpha () weist eine Farbe mit Transparenz zu. In diesem Beispiel beträgt die Transparenz 127, d. H. Sie ist vollständig transparent.
Füllen Sie den Hintergrund : Die ImageFill () -Funktion füllt den Hintergrund des Bildes mit transparenten Farben.
Schalten Sie die Alpha -Mischung ein : Die Funktion "ImageArPleableing () ist auf False eingestellt, was bedeutet, dass die Alpha -Mischung deaktiviert ist, sodass transparente Pixel korrekt gespeichert werden.
Transparenzinformationen speichern : Die Funktion von ImagesAvealpha () stellt sicher, dass Transparenzinformationen in der PNG -Datei gespeichert werden.
Zeichnen Sie ein Diagramm : Zeichnen Sie ein rotes Rechteck, um den Inhalt auf dem Bild anzuzeigen.
Speichern Sie das Bild : Verwenden Sie ImagePng () , um das Bild im PNG -Format zu speichern.
Auf diese Weise stellen wir sicher, dass der Hintergrund des Bildes eher transparent als der standardmäßige schwarze Hintergrund ist.
Bei Verwendung der Funktion "ImageColorallocatealpha" kann der von ImagePng () exportierte Bildhintergrund schwarz werden, wenn die Bildtransparenzverarbeitung nicht korrekt festgelegt wird. Um dieses Problem zu lösen, müssen wir die Alpha -Mischung einschalten und sicherstellen, dass Transparenzinformationen gespeichert werden. Durch korrektes Konfigurieren dieser Parameter hält das generierte PNG -Bild einen transparenten Hintergrund.
Ich hoffe, dieser Artikel kann Ihnen helfen, das Problem zu lösen und PNG -Bilder erfolgreich mit transparentem Hintergrund zu verarbeiten.