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

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

Linda Hamilton
Libérer: 2024-11-04 01:30:03
original
590 Les gens l'ont consulté

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

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!

source:php.cn
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