Maison > développement back-end > tutoriel php > Pourquoi les images PNG deviennent-elles noires avec `imagecreatefrompng()` en PHP ?

Pourquoi les images PNG deviennent-elles noires avec `imagecreatefrompng()` en PHP ?

Susan Sarandon
Libérer: 2024-11-03 14:46:30
original
578 Les gens l'ont consulté

Why are PNG images turning black with `imagecreatefrompng()` in 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>
Copier après la connexion

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>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal