Manipulation d'images en PHP - Librairie GD

Auteur: Mohamed CHINY Durée necessaire pour le cours de Manipulation d'images en PHP - Librairie GD Niveau recommandé pour le cours de Manipulation d'images en PHP - Librairie GD Supports vidéo non disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz non disponibles pour ce cours

Page 4: Colorer les images

Toutes les pages

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:

Coordonnées en GD

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: