Maison > développement back-end > tutoriel php > Comment préserver la transparence lors du redimensionnement des PNG en PHP ?

Comment préserver la transparence lors du redimensionnement des PNG en PHP ?

Barbara Streisand
Libérer: 2024-11-28 14:20:16
original
613 Les gens l'ont consulté

How to Preserve Transparency When Resizing PNGs in PHP?

Comment redimensionner efficacement des PNG avec des arrière-plans transparents en PHP

Redimensionner des images PNG transparentes en PHP peut être une tâche difficile, mais c'est essentiel pour maintenir la qualité de l’image. Le code que vous avez fourni rencontre un problème où la couleur d'arrière-plan se transforme en noir lors du redimensionnement. Pour résoudre ce problème, suivez le code mis à jour ci-dessous :

$this->image = imagecreatefrompng($filename);

imagealphablending($this->image, false);
imagesavealpha($this->image, true);

$newImage = imagecreatetruecolor($width, $height);

// Allocate a new transparent color and enable alpha blending
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $background);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);

// Resize the image with transparent background preserved
imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $newImage;

imagepng($this->image, $filename);
Copier après la connexion

Changements clés :

  • imagealphablending(false) : désactive la fusion alpha avant d'attribuer la couleur transparente pour éviter tout mélange indésirable.
  • imagesavealpha(true) : Permet l'enregistrement de l'arrière-plan transparent avant la copie de l'image.
  • imagefilledrectangle() : Remplit la nouvelle image avec la couleur transparente.

Mise à jour :

Le code fourni gère les arrière-plans transparents avec une opacité définie sur 0. Cependant, pour les images avec des valeurs d'opacité comprises entre 0 et 100, cela produira toujours un fond noir. Malheureusement, il n'existe pas de solution simple au sein de la bibliothèque GD pour gérer ce cas d'utilisation.

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