Ici on va utiliser la seconde fonction qui crée une image en vraies couleurs imagecreatetruecolor() on voir comment y allouer une couleur et dessiner des linges.
Dans le cours précédent nous avons vu comment créer une image vide avec
La fonction imagecreate($largeur, $hauteur); de PHP GD.
Ici on va utiliser la seconde fonction qui crée une image en vraies couleurs
imagecreatetruecolor($largeur, $hauteur);
qui fait le même travail que imagecreate($largeur, $hauteur); sauf qu’elle dessine en vraies couleurs
Puis on voir comment y allouer une couleur et dessiner des linges.
Les couleurs sont spécifiées avec des valeurs RVB, entier ou en
hexadécimal.
Il faut séparer les canaux Rouge, Vert et Bleu.
imagecolorallocate($image, $rouge, $vert, $bleu);
Exemple : pour une couleur hexadécimale #FFAA77, les canaux RVB seront Rouge=0xFF, Vert=0xAA, Bleu=0x77
Et donc pour cette couleur nous aurons les canaux comme suit :
Avec la fonction hexdec() qui transforme les valeurs hexadécimales en valeurs décimales.
Canal rouge $rouge = hexdec("FF");
Canal vert $vert = hexdec("AA");
Canal bleu $bleu = hexdec("77");
Ce qui donne :
Canal rouge $rouge = 255
Canal vert $vert = 170
Canal bleu $bleu = 119
Appliquer une couleur de fond à l’image
Pour appliquer une couleur de fond à notre image de base.
Nous utiliserons la fonction imagefill().
Dont la syntaxe est :
imagefill($img, $largeur, $hauteur, $couleur);
Exemple
Sélectionner le code
<?php
header("Content-type: image/png");
$largeur = 250;
$hauteur = 250;
$img = imagecreatetruecolor($largeur, $hauteur);
$noir = imageColorAllocate($img, 0, 0, 0);
$color = "5CDF00";
$rouge = hexdec("5C"); // canal rouge
$vert = hexdec("D2"); // canal vert
$bleu = hexdec("00"); // canal bleu
//on créé la couleur et on l'attribue à une variable
$couleur= imageColorAllocate($img, $rouge,$vert, $bleu);
//on remplit l'image
imagefill($img,0,0,$couleur);
imagePNG($img);
imageDestroy($img);
?>
Pour dessiner une ligne dans notre image on utilise la fonction :
imageline($image, $x1, $y1, $x2, $y2, $couleur);
Avec :
$x1 et $y1 les coordonnés de la première extrémité
$x2 et $y2 les coordonnés de la sconde extrémité
Exemple
Sélectionner le code
<?php
header("Content-type: image/png");
$largeur = 250;
$hauteur = 250;
$img = imagecreatetruecolor($largeur, $hauteur);
$noir = imageColorAllocate($img, 0, 0, 0);
$color = "5CDF00";
$rouge = hexdec("5C"); // canal rouge
$vert = hexdec("D2"); // canal vert
$bleu = hexdec("00"); // canal bleu
//on créé la couleur et on l'attribue à une variable
$couleur= imageColorAllocate($img, $rouge,$vert, $bleu);
//on créé une première ligne
imageline($img,10,10,140,140,$couleur);
//on créé une seconde ligne
imageline($img,140,140,200,10,$couleur);
imagePNG($img);
imageDestroy($img);
?>
Pour changer l’épaisseur des lignes, il faut utiliser la fonction :
imagesetthickness($image, $size);
$image est notre image et $size est l'épaisseur de la
ligne en pixels.
Vous pouvez également dessiner une ligne en pointillés grâce à
imagedashedline(), son utilisation est similaire à
imageline().
Exemple
Sélectionner le code
<?php
header("Content-type: image/png");
$largeur = 250;
$hauteur = 250;
$img = imagecreatetruecolor($largeur, $hauteur);
$noir = imageColorAllocate($img, 0, 0, 0);
$color1 = "5CDF00";
$rouge1 = hexdec("5C"); // canal rouge
$vert1 = hexdec("D2"); // canal vert
$bleu1 = hexdec("00"); // canal bleu
$color2 = "FFDF00";
$rouge2 = hexdec("FF"); // canal rouge
$vert2 = hexdec("D2"); // canal vert
$bleu2 = hexdec("00"); // canal bleu
//on donne une épaisseur de 20 px pour une ligne
$size1="20";
//on donne une épaisseur de 10 px pour la seconde ligne
$size2="10";
//on créé la couleur1 et on l'attribue à une variable
$couleur1= imageColorAllocate($img, $rouge1,$vert1, $bleu1);
//on créé la couleur1 et on l'attribue à une variable
$couleur2= imageColorAllocate($img, $rouge2,$vert2, $bleu2);
// on alloue l'épaisseur 20px à la première ligne
imagesetthickness($img, $size1);
//on créé une première ligne
imageline($img,50,20,140,140,$couleur1);
// on alloue l'épaisseur 10px à la seconde ligne
imagesetthickness($img, $size2);
//on créé une seconde ligne
imageline($img,140,140,200,10,$couleur2);
imagePNG($img);
imageDestroy($img);
?>
Attention ! à l'ordre des fonctions, imagesetthickness() doit se trouver avant imageline() sinon cela ne fonctionnera pas.
Livre numérique court pour comprendre la méthode secrète permettant d'obtenir des likes sans fin sur Facebook.
GAGNER DE L'ARGENT