Maison > développement back-end > tutoriel php > Pourquoi les vignettes PNG perdent-elles leur transparence lors de l'utilisation de imagecreatefrompng() ?

Pourquoi les vignettes PNG perdent-elles leur transparence lors de l'utilisation de imagecreatefrompng() ?

Susan Sarandon
Libérer: 2024-11-04 11:33:30
original
701 Les gens l'ont consulté

Why Do PNG Thumbnails Lose Transparency When Using imagecreatefrompng()?

Perte de transparence PNG dans les vignettes d'image

Lors de la création de vignettes avec la bibliothèque GD à l'aide de la fonction imagecreatefrompng(), les utilisateurs ont rencontré un problème où l'arrière-plan transparent du PNG est remplacé par une couleur noire unie. Pour résoudre ce problème, examinons le code et identifions une solution.

Le code fourni redimensionne efficacement une image et l'enregistre au format JPEG. Cependant, le problème réside dans l'initialisation de l'image de destination ($dimg) à l'aide de la fonction imagecreatetruecolor(). Pour préserver la transparence des images PNG, des étapes supplémentaires sont nécessaires. Voici une version modifiée du code :

<code class="php">$dimg = imagecreatetruecolor($width_new, $height_new);

// Start changes for PNG transparency
switch ($stype) {

    case 'gif':
    case 'png':
        // Define black as a color
        $background = imagecolorallocate($dimg, 0, 0, 0);
        // Make black transparent
        imagecolortransparent($dimg, $background);
        // Disable blending to avoid mixing black with the image
        imagealphablending($dimg, false);
        // Enable alpha channel preservation
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}
// End changes

$wm = $w/$nw;
$hm = $h/$nh;</code>
Copier après la connexion

En ajoutant ces étapes, nous nous assurons que :

  • Une couleur de fond transparente est définie.
  • Le transparent la couleur est supprimée de l'image de destination.
  • La fusion alpha est désactivée pour empêcher la couleur transparente de se mélanger à l'image.
  • Les informations du canal alpha sont préservées, maintenant la transparence dans la vignette résultante.

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