Maison > Article > développement back-end > Pourquoi les images PNG deviennent-elles noires avec `imagecreatefrompng()` en PHP ?
Les images PNG sont devenues noires avec imagecreatefrompng()
Problème :
Les utilisateurs ont rencontré un problème où la fonction imagecreatefrompng() de PHP convertit les zones transparentes des images PNG en noir uni lors de la création de vignettes à l'aide de la bibliothèque GD.
Code de création de vignettes PHP :
<code class="php">function cropImage($nw, $nh, $source, $stype, $dest) { // ... switch($stype) { case 'png': $simg = imagecreatefrompng($source); break; // ... } // ... }</code>
Solution :
Pour résoudre ce problème, des étapes supplémentaires avant imagecreatetruecolor() sont requises, en particulier pour les images PNG et GIF. Ces étapes impliquent :
<code class="php">// Before imagecreatetruecolor() $dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif // Additional steps for PNG and GIF switch ($stype) { case 'gif': case 'png': // Black color $background = imagecolorallocate($dimg , 0, 0, 0); // Remove black from placeholder imagecolortransparent($dimg, $background); // Turn off alpha blending imagealphablending($dimg, false); // Turn on alpha channel saving imagesavealpha($dimg, true); break; default: break; }</code>
En mettant en œuvre ces étapes supplémentaires, les zones transparentes dans les images PNG seront préservées lors de la création de vignettes à l'aide de imagecreatefrompng().
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!