En PHP, en particulier lorsque vous utilisez la bibliothèque GD pour traiter les images, il est souvent nécessaire d'attribuer des couleurs aux images. ImageColorAllocate () et ImageColorAllocatEalpha () sont deux fonctions couramment utilisées pour allouer des couleurs, mais beaucoup de gens se demanderont quand ils seront débutants: quelle est la différence entre eux? Pourquoi avez-vous besoin de les distinguer? Cet article l'analysera en détail pour vous.
ImageColorAllocate () est une fonction de la bibliothèque PHP GD qui est utilisée pour attribuer une couleur RVB à une image.
L'utilisation de base est la suivante:
<?php
$img = imagecreatetruecolor(200, 200);
$red = imagecolorallocate($img, 255, 0, 0); // rouge
imagefill($img, 0, 0, $red);
imagepng($img, 'https://m66.net/output.png');
imagedestroy($img);
?>
Il accepte quatre paramètres:
$ IMG : Ressource d'image;
$ rouge : ingrédient rouge (0–255);
$ vert : ingrédient vert (0–255);
$ bleu : ingrédient bleu (0–255).
La couleur attribuée de cette manière est une couleur unie sans transparence , adaptée aux scènes où une option totale est requise.
ImageColorAllocatEalPha () est une version améliorée basée sur ImageColorAllocate () , qui vous permet de spécifier la transparence (canal alpha).
Ses paramètres sont les suivants:
$ IMG : Ressource d'image;
$ rouge : ingrédient rouge (0–255);
$ vert : ingrédient vert (0–255);
$ bleu : ingrédient bleu (0–255);
$ alpha : transparence (0–127), où 0 signifie complètement opaque et 127 signifie complètement transparent.
Par exemple:
<?php
$img = imagecreatetruecolor(200, 200);
imagesavealpha($img, true); // Activer la sauvegarde alpha allée
$transparentRed = imagecolorallocatealpha($img, 255, 0, 0, 63); // 半透明rouge
imagefill($img, 0, 0, $transparentRed);
imagepng($img, 'https://m66.net/output_transparent.png');
imagedestroy($img);
?>
ImagesVealpha () ici est important, et les informations de transparence PNG générées sans elles seront perdues.
Caractéristiques | ImageColorAllocate () | ImageColorallocatEalpha () |
---|---|---|
Si la transparence est soutenue | Non pris en charge, seulement des couleurs opaques | Support, le quatrième paramètre définit la transparence |
utiliser | Dessinez des blocs de couleurs ordinaires, des lignes, du texte, etc. | Dessiner des éléments qui nécessitent des effets transparents ou translucides |
Plage de valeurs de transparence | aucun | 0 (opaque) - 127 (transparent complet) |
En d'autres termes, si vous devez dessiner une couleur normale sur l'image (complètement opaque), l'utilisation d'imageColorAllocate () suffit. Et si vous souhaitez dessiner un graphique avec des effets transparents, tels que la création d'une PNG avec un fond transparent ou un effet de superposition translucide, vous devez utiliser ImageColorAllocatEalpha () .
Les principales raisons sont:
Problème d'efficacité : le calcul et le stockage des couleurs opaques sont plus simples que ceux avec transparence;
Problèmes de compatibilité : certains formats de sortie (tels que JPEG) ne prennent pas en charge la transparence par eux-mêmes, il n'est donc pas logique d'utiliser des couleurs transparentes;
Clarité du code : clarifier les effets transparents nécessaires et quand ils ne sont pas nécessaires peuvent rendre le code plus facile à maintenir.
Si vous utilisez simplement ImageColorAllocatealpha () , il peut non seulement augmenter les calculs inutiles, mais également provoquer des problèmes de compatibilité du format.
? Si vous ne faites que le remplissage d'images simples, le dessin de lignes et l'ajout de texte: utilisez ImageColorAllocate () .
? Si vous devez créer un filigrane avec la transparence et la superposition translucide de PNG: utilisez ImageColorAllocatealPha () , n'oubliez pas d'activer ImagesVealpha () en même temps.