Perte de transparence PNG dans les vignettes d'image
Lors de la création de vignettes avec la bibliothèque GD à l'aide de la fonction imagecreatefrompng(), les utilisateurs ont rencontré un problème où l'arrière-plan transparent du PNG est remplacé par une couleur noire unie. Pour résoudre ce problème, examinons le code et identifions une solution.
Le code fourni redimensionne efficacement une image et l'enregistre au format JPEG. Cependant, le problème réside dans l'initialisation de l'image de destination ($dimg) à l'aide de la fonction imagecreatetruecolor(). Pour préserver la transparence des images PNG, des étapes supplémentaires sont nécessaires. Voici une version modifiée du code :
<code class="php">$dimg = imagecreatetruecolor($width_new, $height_new); // Start changes for PNG transparency switch ($stype) { case 'gif': case 'png': // Define black as a color $background = imagecolorallocate($dimg, 0, 0, 0); // Make black transparent imagecolortransparent($dimg, $background); // Disable blending to avoid mixing black with the image imagealphablending($dimg, false); // Enable alpha channel preservation imagesavealpha($dimg, true); break; default: break; } // End changes $wm = $w/$nw; $hm = $h/$nh;</code>
En ajoutant ces étapes, nous nous assurons que :
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!