Position actuelle: Accueil> Derniers articles> Utilisez ImageFill () pour définir un arrière-plan transparent pour une image

Utilisez ImageFill () pour définir un arrière-plan transparent pour une image

M66 2025-05-23

Lorsque vous utilisez la bibliothèque GD de PHP pour le traitement d'image, nous devons parfois définir un arrière-plan transparent pour l'image, comme rendre l'arrière-plan transparent lors de la génération d'images PNG au lieu de remplir le blanc ou le noir. Pour réaliser cet effet, vous pouvez principalement utiliser les deux fonctions: ImageColorAllocatealPha () et ImageFill () .

Cet article expliquera en détail comment utiliser ces deux fonctions et donner l'exemple de code complet.

Fonction Introduction

ImageColorallocatEalpha ()

 int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

Cette fonction est utilisée pour attribuer une couleur à l'image spécifiée et définir la transparence.

  • $ rouge, $ vert, $ bleu : valeur de couleur RVB (0-255)

  • $ alpha : valeur de transparence (0 est complètement opaque, 127 est complètement transparent)

La valeur retournée est un identifiant de couleur, qui peut être utilisé dans des fonctions telles que ImageFill () .

ImageFill ()

 bool imagefill ( resource $image , int $x , int $y , int $color )

Cette fonction est utilisée pour remplir l'image avec la couleur spécifiée.

  • $ x, $ y : remplissez les coordonnées du point de départ

  • $ couleur : l'identifiant de couleur à utiliser

Combiné avec ImageColorAllocatEalpha () , nous pouvons remplir la toile entière de couleurs transparentes.

Exemple pratique: créez une image PNG avec un fond transparent

Vous trouverez ci-dessous un code PHP complet qui montre comment utiliser la bibliothèque GD pour générer une image PNG 200x200 avec un fond transparent et dessiner un cercle rouge au milieu.

 <?php
// Créer un 200x200 True Image couleur
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// Éteindre le mode de mélange de couleurs,Activer la sauvegarde alpha Informations sur les canaux
imagealphablending($image, false);
imagesavealpha($image, true);

// Attribuer une couleur complètement transparente
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);

// Remplissez la toile entière de couleurs transparentes
imagefill($image, 0, 0, $transparent);

// Attribuer le rouge(opaque)
$red = imagecolorallocate($image, 255, 0, 0);

// Dessinez un cercle rouge au milieu
imagefilledellipse($image, $width / 2, $height / 2, 100, 100, $red);

// L&#39;image de sortie est PNG
header('Content-Type: image/png');
imagepng($image);

// Mémoire libre
imagedestroy($image);
?>

Analyse de code

1 ?? Créer des ressources d'image <br> Nous utilisons ImageCreateTrueColor () pour créer une vraie toile de couleur.

2 ?? Activer le fond transparent
GD n'enregistre pas les informations alpha par défaut et nécessite:

 imagealphablending($image, false);
imagesavealpha($image, true);

3 ?? Allouer et remplir de couleurs transparentes <br> Utilisez ImageColorAllocatealPha () pour créer une couleur complètement transparente (alpha = 127), puis utilisez ImageFill () pour remplir la toile entière.

4 ?? Dessiner du contenu <br> Ici, nous avons dessiné un cercle rouge, que vous pouvez changer en texte, en lignes, en images, etc.

5 ?? Image de sortie <br> Utilisez l'en-tête ('Content-Type: Image / Png') pour définir le type de sortie, puis utilisez ImagePng () sur la sortie sur le navigateur, ou passez le nom de fichier pour enregistrer sur disque, par exemple: par exemple:

 imagepng($image, '/path/to/save/output.png');

Conseils

? Enregistrer dans le fichier <br> Si vous souhaitez enregistrer l'image sur le serveur, vous pouvez le faire:

 imagepng($image, 'https://m66.net/images/output.png');

? Passez à GIF
Bien que GIF prenne également en charge les arrière-plans transparents, la méthode de mise en œuvre transparente est différente. Vous pouvez utiliser ImageColOrTransparent () .

? Faites attention aux autorisations <br> Lorsque vous enregistrez le répertoire du serveur, assurez-vous que le processus PHP a des autorisations d'écriture.