[PHP Centrer du texte dans une image GD

[PHP Centrer du texte dans une image GD - PHP - Programmation

Marsh Posté le 11-02-2006 à 18:44:47    

Salut @ tous et toutes,
Voilà un script qui permet de centrer du texte dans une image générée avec la librairie GD de PHP ... S'il y a une solution plus rapide ou mieux optimisée, je suis preneur aussi  :D  
 

Citation :


// Création de l'image
$fichierImage = imagecreatetruecolor(350, 400);
 
// Texte à afficher
$policeTitre = 4; // C'est moi la plus grande police ! Nananère !!
$police = 2; // Cherche pas à comprendre ! Moi j'ai compris ! Parce ce que je suis trop fort !! Capiche!!
 
// Fonction pour déterminer le centrage de la chaine de caractères (elle prend comme paramètre : la chaine et la police d'écriture
function centrage_texte($z,$y)
 {
  // Je calcule le nombre de caractères dans la chaine
  $a = strlen($z);
  // Je calcule la taille d'un caractère par rapport à la taille de la police
  $b = imagefontwidth($y);
  // Je calcule la taille de ma chaine de caractères  
  $c = $a*$b;
  // Je calcule combien il me reste de caractères/espace sur les côtés pour centrer mon texte
  $d = 350-$c;
  // Je recherche l'emplacement où débutera ma chaine de caractères
  $e = $d/2;  
  // La chaine commencera ... à cet emplacement  
  return $e;  
 }
 
// Couleurs
$couleurFond = imagecolorallocate($fichierImage,255,0,0); // C'est du rouge !
$couleurTexte = imagecolorallocate($fichierImage,0,0,0 ); // C'est du noir !
 
// Création d'un rectangle
imagefilledrectangle($fichierImage, 0, 0,350,400,$couleurFond);
 
// Textes à centrer
$texte1 = "TITRE";
$texte2 = "Je suis un texte centré";
 
// Insertion des textes + utilisation de la fonction pour centrer
imagestring($fichierImage,$policeTitre,centrage_texte($texte1,$policeTitre),10,$texte1,$couleurTexte);
imagestring($fichierImage,$police,centrage_texte($texte2,$police),100,$texte2,$couleurTexte);  
 
// Type de l'image
header("Content-type: image/jpeg" );
 
// Expédition de l'image au navigateur
imagejpeg($fichierImage);
 
// Destruction de l'image
imagedestroy($fichierImage);  


 
Cordialement,
Zeo


Message édité par zeo34 le 11-02-2006 à 18:45:09
Reply

Marsh Posté le 11-02-2006 à 18:44:47   

Reply

Marsh Posté le 11-02-2006 à 19:04:39    

Tu peux également utiliser imagettfbbox pour connaitre les dimensions de ton texte.
Si tu n'utilises pas une police ttf il existe l'equivalent pour les autres formats de police.


Message édité par afbilou le 11-02-2006 à 19:07:11
Reply

Marsh Posté le 11-02-2006 à 19:20:21    

Salut,
Merci de ton conseil mais j'ai concu ce script ca je ne voulais pas utiliser la fonction "imagettfbbox" !
@plus

Reply

Marsh Posté le 11-02-2006 à 19:28:37    

image*bbox n'a pas pour but de remplacer ton script ... mais juste la ligne "$b = imagefontwidth($y);"  :??:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed