Maison >développement back-end >tutoriel php >Comment puis-je préserver la transparence lors du redimensionnement des fichiers PNG avec PHP GDlib ?

Comment puis-je préserver la transparence lors du redimensionnement des fichiers PNG avec PHP GDlib ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 08:48:12357parcourir

How Can I Preserve Transparency When Resizing PNGs with PHP GDlib?

Préserver la transparence dans les PNG redimensionnés avec PHP GDlib

Lors du rééchantillonnage d'une image PNG à l'aide de PHP GDlib, il est courant de rencontrer un problème où les zones transparentes dans l'image originale sont remplis d'une couleur unie. Cela se produit même lorsque la fonction imagesavealpha() est utilisée.

Pour garantir que la transparence est préservée dans l'image rééchantillonnée, les étapes supplémentaires suivantes doivent être suivies :

  1. Définissez le mélange alpha de l'image mode sur false en utilisant imagealphablending($targetImage, false), où $targetImage est l'image rééchantillonnée.
  2. Définissez la sauvegarde alpha de l'image sur true en utilisant imagesavealpha($targetImage, true).

Exemple de code :

Le code révisé suivant démontre l'approche corrigée :

$uploadTempFile = $myField['tmp_name'];
list($uploadWidth, $uploadHeight, $uploadType) = getimagesize($uploadTempFile);

$srcImage = imagecreatefrompng($uploadTempFile);

$targetImage = imagecreatetruecolor(128, 128);
imagealphablending($targetImage, false);
imagesavealpha($targetImage, true);

imagecopyresampled($targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight);

imagepng($targetImage, 'out.png', 9);

En incorporant ces étapes supplémentaires, la transparence de l'image PNG redimensionnée sera maintenue, permettant la préservation des éléments transparents tels que les logos ou l'arrière-plan. images.

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