Maison  >  Article  >  développement back-end  >  Pourquoi `imagecreatefrompng()` rend-il un fond noir au lieu de transparence ?

Pourquoi `imagecreatefrompng()` rend-il un fond noir au lieu de transparence ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 01:30:03482parcourir

Why Does `imagecreatefrompng()` Render a Black Background Instead of Transparency?

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!

Déclaration:
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