Centrer du texte dans une image faite en php

Dans un article précédent, je vous montrai comment générer une images de type QRcode mais c’était avec un petit formulaire avec un couche de javascript.
Cette fois ci, on va se pencher sur la création d’image en avec la bibliothèque GD de PHP.

La création d’une image

Dans un premier temps, on va créer une image simple (toute rouge)

<?php
header('Content-type: image/png');
$image = imagecreate(150, 150);
$background = imagecolorallocate($image, 255, 0, 0);
imagepng($image);
?>
  • header(« Content-type: image/png »);
    C’est une fonction qui sert à définir quel type de document sera affiché, dans notre cas, il s’agit d’une image png
  • $image = imagecreate(150, 150);
    Pour définir la taille de l’image de l’image que l’on créé
  • $background = imagecolorallocate($image, 255, 0, 0);
    Nous définissons une couleur (en RGV) pour remplir l’image
  • imagepng($image);
    Et on créer l’image !

Ajouter du texte

<?php
header('Content-type: image/png');
$image = imagecreate(150, 150);
$background = imagecolorallocate($image, 255, 0, 0); /* On définie une couleur de fond (ici ROUGE) */
$noir = imagecolorallocate($image, 0, 0, 0); /* On définie une couleur que nous utiliserons après*/
imagestring($image, 5, 10, 10, "mon texte", $noir); /* On insère le texte "mon texte" avec une largeur de caractère de 5 à 10px du haut et 10px de la gauche*/
imagepng($image);
?>

Centrer le texte dans l’image

<?php
header('Content-type: image/png');
 
/* * *******************************
 * Parametre
 * ********************************
 */
$largeur = 150; /* longueur de l'image */
$hauteur = 150; /* hauteur de l'image */
$image = imagecreate($largeur, $hauteur);
/* Background */
$background = imagecolorallocate($image, 0, 255, 0);
/* Couleur du text */
$couleurTxt = imagecolorallocate($image, 255, 0, 0);
/* texte à mettre dans l'image */
$txt = "mon texte";
/* Taille du texte */
$font = 3;
/* Hauteur et largeur des caratères */
$largeurCaractere = ImageFontWidth($font);
$hauteurCaractere = ImageFontHeight($font);
/* Longueur du texte (taille caratère X nombre de caractère) */
$largeurTxt = $largeurCaractere * strlen($txt);
/* Recherche de la position horizontale centrale pour centrer le texte */
$positionCentreHor = ceil(($largeur - $largeurTxt) / 2);
/* Recherche de la position horizontale centrale pour centrer le texte */
$positionCentreVer = ceil(($hauteur - $hauteurCaractere) / 2);
/* Ajout du texte au centre de l'image */
$image_string = ImageString($image, $font, $positionCentreHor, $positionCentreVer, $txt, $couleurTxt);
/* Création de l'image */
imagepng($image);
?>

N’hésitez pas à contribuer à cet article en commentant, en apportant des conseils (ou mise en garde) sur la création d’image en php.

2 responses sur “Centrer du texte dans une image faite en php”

  1. Merci parfait pour ce que je cherchais à faire. Juste un truc, j’ai été obligé en utilisant une taille de police à 5 de multiplier par 9 le nombre de caractères car sinon c’était pas centré.. Les joies de PhP sont impénétrables

Leave a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *