oujood.com

Les couleurs et les lignes en PHP GD

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.

chercher |

PHP cours tutorial

Les couleurs et les lignes en PHP GD

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

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

Exemple :     📋 Copier 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); 
  ?>
         

Les lignes


 

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

Exemple :     📋 Copier 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); 
  ?>
         

Réglage de l’épaisseur


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

 

Exemple :     📋 Copier 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.




Par carabde 20 Aout 2014

Voir aussi nos tutoriel :

CSS3 La propriété backface-visibility

La propriété backface-visibility définit si l’arrière d’un élément doit être visible ou pas quant elle est face à l'écran.

fonction substr_count, substr_count

Compte le nombre d'occurrences de segments dans une chaîne

Jouer des vidéos sur un Site Web

Navigateur et  vidéos
Ce chapitre décrit comment insérer des vidéos dans une page web.