Colorer les images créées
Système de coordonnées
En CSS nous avons déjà parlé de systèmes de coordonnées pour positionner les balises (DIV en particulier). Si vous vous souvenez bien, nous avons vu que le point d'origine est le coin haut à gauche de l'espace d'affichage du navigateur. GD reprend le même principe, sauf que cette fois les coordonnées sont spécifiées par rapport à l'image créée et non pas à l'espace d'affichage du navigateur.
Supposons que nous avons le code suivant:
<?php
$img = imagecreatetruecolor(400,300);
?>
Alors les coordonnées ressembleront à ceci:
Les couleurs: fonction imagecolorallocate()
Pour définir une couleur on fait appel à la fonction
imagecolorallocate($img , $rouge , $vert , $bleu) qui accepte 4 paramètres. Le premier représente l'identifiant de l'image créée, quant aux trois restants, ils représentent les valeurs du rouge, vert et bleu (système RVB ou RGB vu en HTML et CSS). Cependant, ces valeurs sont exprimées en décimal et non pas en hexadécimal. Donc si vous voulez convertir un code hexadécimal en décimal vous pouvez faire appel à la fonction
hexdec().
La fonction
imagecolorallocate() retourne un entier.
Exemple:
<?php
header("content-type:image/png");
$img = imagecreatetruecolor(400,300);
$rouge = imagecolorallocate($img,255,0,0);
$vert = imagecolorallocate($img,hexdec("00"),hexdec("FF"),hexdec("00"));
imagepng($img);
?>
Dans ce cas nous avons défini les couleurs rouge et verte respectivement dans les variables $rouge et $vert. L'image affichée sera toujours noire car nous n'avons pas encore appliqué ces couleurs à aucun objet.
Colorer le fond d'une image: fonction imagefill()
La fonction
imagefill($img , $x , $y , $couleur) permet de colorer l'image identifiée par $img avec la couleur $couleur à partir du point dont les coordonnées sont respectivement $x et $y. La fonction remplit de couleur toute la zone située à gauche et en dessous du point désigné par les coordonnées.
Exemple:
<?php
header("content-type:image/png");
$img = imagecreatetruecolor(400,300);
$gris = imagecolorallocate($img,220,220,220);
imagefill($img,0,0,$gris);
imagepng($img);
?>
Ce qui donne: