Des beaux titres "à la volée" avec GD
Par Yves Tannier le mardi, novembre 18 2003, 16:20 - Le PHP - Lien permanent
Pour la conception d'un site, on est toujours limité dans le choix des polices de caractère aux polices de périphérique (Verdana, Times, Georgia...). Donc, c'est souvent pratique ce petit truc avec la librairie graphique GD qui permet de créer des images de texte à la volée.
Par exemple sur un site ou les titres sont dans une police un peu "originale" (voir les exemples à la fin) cette technique évite de créer toutes les images correspondantes aux textes dans photoshop. Encore plus pratique quand le site est multilingue car les textes des images sont traduits à la volée. Au lieu d'avoir 50 images, on a seulement un fichier !
Voici en gros ce que ça donne, à modifier à votre convenance. On passe la taille de la police et le texte du titre en paramètre
On intègre les images avec un simple <img src="titres.php?text=hello world&s=40" />
Et le fichier titres.php
<? header("content-type: image/png");
if (empty($s)) { $s = 22; } //la taille du texte on peut la passer en paramètre
//la police de caractère à placer dans un repertoire accesible en écriture en (ici /font/)
$font= dirname($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'])."/font/arial.ttf";
$size = imagettfbbox($s,0,$font,$text); // taille de l'image
$dx = abs($size[2]-$size[0]);
$dy = abs($size[5]-$size[3]);
$xpad=5; //espacement x
$ypad=18; //espacement y
$im = imagecreate($dx+$xpad,$dy+$ypad);
$white = imagecolorallocate($im, 255,255,255);
$blue = imagecolorallocate($im, 129,35,69);
imagettftext($im, $s, 0, (int)($xpad/2), $dy+(int)($ypad/2), $blue, $font, $text);
imagepng($im);
imagedestroy($im); ?>
Exemple :
- Un site avec des titres dans une police "originale" viradedoubs.ouvaton.org
- Un site (en travaux) avec notamment le logo "multilingue" theater-translation.net
