Maison > Article > développement back-end > Pourquoi `imagecreatefrompng()` rend-il un fond noir au lieu de transparence ?
Imagecreatefrompng() Rendu d'un fond noir au lieu de transparence
Le code PHP fourni pour générer des vignettes à l'aide de la bibliothèque GD rencontre un problème de transparence PNG est remplacé par une couleur noire unie. Pour résoudre ce problème, le code nécessite des modifications pour préserver les informations du canal alpha de l'image PNG.
Dans la fonction cropImage(), après l'appel imagecreatetruecolor(), les modifications suivantes doivent être implémentées :
<code class="php">switch ($stype) { case 'gif': case 'png': // Allocate black color and set as background $background = imagecolorallocate($dimg, 0, 0, 0); // Set black as transparent imagecolortransparent($dimg, $background); // Disable alpha blending to preserve transparency imagealphablending($dimg, false); // Enable alpha channel saving to preserve full transparency range imagesavealpha($dimg, true); break; default: break; }</code>
Ces modifications garantissent que le fond noir est supprimé et que la transparence du PNG est préservée. La désactivation de la fusion alpha empêche les zones transparentes du PNG d'être mélangées avec la couleur noire. L'activation de la sauvegarde du canal alpha garantit la conservation de la plage complète de transparence.
En implémentant ces modifications de code, le générateur de vignettes devrait correctement maintenir la transparence PNG, rendant les arrière-plans transparents au lieu du noir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!