Maison > Article > développement back-end > Pourquoi imagecreatefrompng() produit-il un fond noir au lieu d'une zone transparente ?
imagecreatefrompng() Produire un fond noir au lieu d'une zone transparente ?
En PHP, la fonction imagecreatefrompng() est couramment utilisée pour travailler avec PNG images. Cependant, il a été observé que lors de l'utilisation de cette fonction, la transparence PNG peut être convertie en une couleur noire unie.
Pour résoudre ce problème, les étapes suivantes peuvent être mises en œuvre après la création d'un nouveau canevas à l'aide de imagecreatetruecolor() :
Par En mettant en œuvre ces modifications, les informations du canal alpha dans l'image PNG seront préservées, empêchant sa conversion en fond noir. Le code mis à jour ressemblerait à ce qui suit :
<code class="php"><?php // ... Before imagecreatetruecolor() $dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif // start changes switch ($stype) { case 'gif': case 'png': // integer representation of the color black (rgb: 0,0,0) $background = imagecolorallocate($dimg , 0, 0, 0); // removing the black from the placeholder imagecolortransparent($dimg, $background); // turning off alpha blending (to ensure alpha channel information // is preserved, rather than removed (blending with the rest of the // image in the form of black)) imagealphablending($dimg, false); // turning on alpha channel information saving (to ensure the full range // of transparency is preserved) imagesavealpha($dimg, true); break; default: break; } // end changes $wm = $w/$nw; $hm = $h/$nh; // ...</code>
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!