Heim > Backend-Entwicklung > PHP-Tutorial > Wie bleibt die Transparenz bei der Größenänderung von PNGs in PHP erhalten?

Wie bleibt die Transparenz bei der Größenänderung von PNGs in PHP erhalten?

Barbara Streisand
Freigeben: 2024-11-28 14:20:16
Original
558 Leute haben es durchsucht

How to Preserve Transparency When Resizing PNGs in PHP?

So ändern Sie die Größe von PNGs mit transparentem Hintergrund effektiv in PHP

Die Größenänderung transparenter PNG-Bilder in PHP kann eine herausfordernde Aufgabe sein, ist aber unerlässlich Aufrechterhaltung der Bildqualität. Der von Ihnen bereitgestellte Code weist ein Problem auf, bei dem sich die Hintergrundfarbe bei der Größenänderung in Schwarz ändert. Um dies zu beheben, folgen Sie dem aktualisierten Code unten:

$this->image = imagecreatefrompng($filename);

imagealphablending($this->image, false);
imagesavealpha($this->image, true);

$newImage = imagecreatetruecolor($width, $height);

// Allocate a new transparent color and enable alpha blending
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $background);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);

// Resize the image with transparent background preserved
imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $newImage;

imagepng($this->image, $filename);
Nach dem Login kopieren

Wichtige Änderungen:

  • imagealphablending(false): Deaktiviert Alpha Blending vor der Zuweisung der transparenten Farbe um unerwünschte Überblendungen zu verhindern.
  • imagesavealpha(true): Ermöglicht das Speichern des transparenten Hintergrunds vor dem Kopieren des Bildes.
  • imagefilledrectangle(): Füllt das neue Bild mit der transparenten Farbe.

Aktualisieren :

Der bereitgestellte Code verarbeitet transparente Hintergründe mit einer Deckkraft von 0. Allerdings für Bilder mit Deckkraftwerten dazwischen 0 und 100, es wird immer noch ein schwarzer Hintergrund erzeugt. Leider gibt es innerhalb der GD-Bibliothek keine einfache Lösung für diesen Anwendungsfall.

Das obige ist der detaillierte Inhalt vonWie bleibt die Transparenz bei der Größenänderung von PNGs in PHP erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage