Ecrire du texte dans une image avec PHP et GD

..

PHP cours tutorial

Ecrire du texte dans une image avec PHP et GD

Créer une image et y ajouter un texte

Il est  possible d'ajouter du texte sur une image avec la librairie GD et PHP.

Pour ajouter un texte sur une image on utilise les fonctions suivantes:

1) Texte horizontal


 La fonction imageString()

Dont la syntaxe est :

ImageString($img, $font_size, $x, $y, $texte, $color)

Cette fonction écrit un texte horizontal sur une image

$img :image source sur laquelle on va ajouter le texte

$font_size: la taille de la police à utiliser pour le texte, exprimé en pixels (GD2) ou en points de 1 à 5 (GD1),

$x et $y : les coordonnées du texte pour déterminer la position du texte sur l’image

$color : la couleur à utiliser pour le texte

2) Texte vertical


La fonction imagestringup()

Dont la syntaxe est :

imagestringup($img, $font_size, $x, $y, $texte, $couleur);

Cette fonction écrit un texte vertical sur une image

$img :image source sur laquelle on va ajouter le texte

$font_size: la taille de la police à utiliser pour le texte, exprimé en pixels (GD2) ou en points de 1 à 5 (GD1),

$x et $y : les coordonnées du texte pour déterminer la position du texte sur l’image

$color : la couleur à utiliser pour le texte

Exemple :

Sélectionner le code

  <?php 
  header("Content-type: image/png"); 
  $longueur = 150; 
  $hauteur = 150; 
   
  $image = imagecreatetruecolor($longueur ,$hauteur ); 
   
  $rouge = hexdec("cc"); 
  $vert = hexdec("ff"); 
  $bleu = hexdec("00"); 
  $couleur = imagecolorallocate($image,$rouge,$vert,$bleu); 
     //on écrit un texte horizontal
  $x= 30 ;
  $y=10 ;
  imagestring($image, 2, $x, $y, "Texte horizontal", $couleur);
  //on écrit un texte vertical
  $x= 50 ;
  $y=130 ;
  imagestringup($image, 2, $x, $y, "Texte vertical", $couleur);
  imagepng($image); 
  imagedestroy($image); 
  ?>
            
 

3) Texte incliné


On peut aussi écrire un texte incliné à un angle donné.

La fonction qui permet d’écrire un texte incliné est :

imagettfbbox()

dont la syntaxe est :

imagettfbbox($image, $font_size, $angle, $x, $y, $couleur, $font_filename, $text);

Avec :

$font_size est la taille du texte, exprimé en pixels (GD2) ou en points de 1 à 5 (GD1),

$angle est l'angle du texte, exprimé en degrés. Pour un texte horizontal il faudra mettre 0 (pour 0°).

$font_filename est le nom de fichier de la police TTF à utiliser.

$text est la chaîne de caractères à écrire.

Exemple :

Sélectionner le code

  <?php
  // Définition du content-type
  header('Content-type: image/png');
   
  // Création du caneva de l'image
  $im = imagecreatetruecolor(250, 250);
   
  // Création de quelques couleurs
  $bleu = imagecolorallocate($im, 0, 0, 255);
  $gris = imagecolorallocate($im, 128, 128, 128);
  $blanc = imagecolorallocate($im, 255, 255, 255);
   
  /* On crée une image de rectangle blanc sur la quelle on va
  ajouter notre texte*/
  imagefilledrectangle($im, 0, 0, 250, 250,$blanc );
   
  // Le texte à dessiner
  $text = 'Texte incliné à 45°';
  /* Le chemin de votre  police dans cet exemple la fiche de la
  police se trouve dans le même dossier*/
  $font = './arial.ttf';
   
  // On ajoute une ombres au texte
  imagettftext($im, 20, 45, 12, 222, $gris, $font, $text);
   
  // Ajout du texte
  imagettftext($im, 20, 45, 10, 220, $bleu, $font, $text);
   
  // Utiliser imagepng() donnera un texte plus claire,
  // comparé à l'utilisation de la fonction imagejpeg()
  imagepng($im);
  imagedestroy($im);
  ?>
            
 

Ajouter un texte à une image ou photo préexistante


Pour ajouter un texte à une image ou une photo existante nous utiliserons le même script que ci-dessus .

Mais au lieu de :

  $img = imageCreate($largeur, $hauteur);

nous utilisons la fonction imagecreatefrompng() comme suit :

$img = imagecreatefrompng("dossier/image.png");

La fonction imagecreatefrompng("dossier/image.png") crée une image à partir d’une image ou une photo qui existe déjà sur note machine.

Avec "dossier/image.png" qui est le chemin de notre image ou photo sur laquelle on veut ajouter le texte

Exemple : Pour exécuter cet exemple remplacer VotreImage.png par le chemin de votre image ou photo.

Sélectionner le code

  <?php
   
  $tableau = GetImageSize ("image.png");
   
  $largeur = $tableau[0];
   
  $hauteur =$tableau[1];
  
   header("Content-type:image/png");
   $titre_police= 2;
   $string = "Texte dans une image";
   $x=($largeur-imageFontWidth($titre_police)*strlen("$string"))/2;
   $y=($hauteur/2-5*$titre_police);
  // VotreImage.png est le chemin de votre image
   $img = imagecreatefrompng("VotreImage.png");
   $noir = imagecolorallocate($img, 0, 0, 0);
  
   imagestring($img, $titre_police, $x, $y, $string, $noir);
   imagePNG($img);
   imageDestroy($img);
            
 

Par carabde 20 Aout 2014