Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich die Größe von PNGs mit Transparenz mithilfe der GDlib von PHP ändern und Alphakanäle beibehalten?
Größe von PNGs mit Transparenz mithilfe der GDlib von PHP ändern
Beim Umgang mit PNG-Dateien ist die Beibehaltung der Bildtransparenz von entscheidender Bedeutung. Während GDlib Bildbearbeitungsfunktionen bietet, kann die Größenänderung von PNGs unter Beibehaltung der Transparenz eine Herausforderung darstellen.
Ein Problem bei der Verwendung der imagecopyresampled-Funktion von GD besteht darin, dass transparente Bereiche im ursprünglichen PNG durch eine Volltonfarbe ersetzt werden. Dies tritt auf, obwohl „imagesavealpha“ auf „true“ gesetzt ist.
Um dieses Problem zu beheben, ist es wichtig, die Alpha-Einstellungen korrekt anzugeben. In PHP gelten Alpha-Einstellungen für das Zielbild, nicht für das Quellbild. Durch Anpassen der Alpha-Eigenschaften des Zielbilds können wir eine Transparenzerhaltung erreichen:
imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true );
imagealphablending(false) deaktiviert jegliche Überblendung und respektiert den Alpha-Kanal des Bildes. imagesavealpha(true) stellt sicher, dass der Alphakanal des PNG in der Ausgabe erhalten bleibt.
Hier ist ein überarbeiteter PHP-Codeausschnitt, der diese Anpassungen enthält:
$uploadTempFile = $myField[ 'tmp_name' ] list( $uploadWidth, $uploadHeight, $uploadType ) = getimagesize( $uploadTempFile ); $srcImage = imagecreatefrompng( $uploadTempFile ); $targetImage = imagecreatetruecolor( 128, 128 ); imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true ); imagecopyresampled( $targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight ); imagepng( $targetImage, 'out.png', 9 );
Dieser geänderte Code sollte die Größe des PNG effektiv ändern Bild unter Beibehaltung der Transparenz. Beachten Sie, dass es nicht garantiert ist, dass es in allen Fällen perfekt ist, aber es bietet einen soliden Ausgangspunkt.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe von PNGs mit Transparenz mithilfe der GDlib von PHP ändern und Alphakanäle beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!