Aide mémoire : HTML Liste des attributs d'événement...
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.
SCREEBER - Logiciel de copywriting Augmentez vos résultats en rejoignant les 1600 entrepreneurs qui utilisent Screeber®, le seul logiciel de Copywriting (en français) qui rédige avec vous des textes de vente qui convertissent