En PHP, la fonction ImageColorAllocatealPha () est utilisée pour attribuer des images avec une couleur avec des informations alpha (transparence). Mais il convient de noter que cette fonction. Si vous essayez de l'utiliser sur une image non truecolor (une image de palette créée par ImageCreate () ), vous pouvez rencontrer un comportement ou des erreurs inattendu.
Alors, comment utiliser la fonction d' imageColorallocatEalpha () indirectement sur les images non truecolor? Cet article vous guidera à travers ses principes et fournira des exemples de code pratiques.
Image basée sur la palette
Utilisez jusqu'à 256 couleurs, chaque couleur est stockée dans la palette. Créé par ImageCreate () . Convient aux graphiques simples, mais ne prend pas en charge les vrais canaux transparents.
Image truecolor <br> Chaque pixel stocke indépendamment RVB (rouge, vert, bleu) et alpha (transparence). Créé par ImageCreateTrueColor () . Convient aux graphiques et scénarios complexes où la transparence est requise.
Étant donné que l'imageColorallocatEalpha () implique un canal alpha, il nécessite une image truecolor pour prendre effet.
Si vous avez créé une image de palette avec ImageCreate () au début, vous pouvez le convertir en une image TrueColor avant d'utiliser ImageColorAllocatealPha () .
<?php
// Créer une image de palette
$paletteImage = imagecreate(200, 200);
$white = imagecolorallocate($paletteImage, 255, 255, 255);
$black = imagecolorallocate($paletteImage, 0, 0, 0);
// Convertir les images de palette en truecolor image
$truecolorImage = imagecreatetruecolor(imagesx($paletteImage), imagesy($paletteImage));
imagecopy($truecolorImage, $paletteImage, 0, 0, 0, 0, imagesx($paletteImage), imagesy($paletteImage));
// Attribuez une couleur avec transparence
$transparentRed = imagecolorallocatealpha($truecolorImage, 255, 0, 0, 64); // 64 Indique translucide
// Utilisez cette couleur pour dessiner un rectangle de remplissage
imagefilledrectangle($truecolorImage, 50, 50, 150, 150, $transparentRed);
// Paramètres Enregistrer sous PNG(Soutenir la transparence)
header('Content-Type: image/png');
imagepng($truecolorImage);
// Nettoyez la mémoire
imagedestroy($paletteImage);
imagedestroy($truecolorImage);
?>
ImageCreateTrueColor () crée des images avec un fond complètement noir par défaut. Si vous souhaitez conserver l'arrière-plan de l'image de palette d'origine, vous devez utiliser ImageCopy () .
La sortie est au format PNG pour enregistrer le canal alpha (JPEG ne prend pas en charge la transparence).
La valeur de transparence alpha varie de 0 (complètement opaque) à 127 (complètement transparente).
<?php
$image = imagecreatefrompng('https://m66.net/images/sample.png');
$semiTransparentBlue = imagecolorallocatealpha($image, 0, 0, 255, 80);
imagefilledellipse($image, 100, 100, 80, 80, $semiTransparentBlue);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>