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);
Changements clés :
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!