SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 30 visiteurs en ce moment

Accueil du site > Affichage multimédia > Images > Traitement d’images > Mettre un titre en image avec police TrueType

Mettre un titre en image avec police TrueType

14 juillet 2005 – par jonathan – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

1 vote

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Afficher le titre d’un article en tant qu’image en utilisant une police TrueType.

La raison d’être

Vous savez sans doute qu’il est impossible d’être sûr que la police de caractères que vous avez choisi sera celle effectivement affichée sur l’écran de vos visiteurs. Une seule solution à cela : utiliser des images.

Mais pour une système dynamique tel que SPIP, il faut également que les images soient générées dynamiquement. Pour cela je vous propose d’utiliser un filtre dans le fichier mes_fonctions.php3 et la librairie GD de PHP.

Comment s’y prendre

La première chose à faire est d’ajouter la fonction suivante dans votre fichier mes_fonctions :

function enimage($texte,$taille=20,$align="centre"){
return "<img
src=\"/IMG/img.php?texte=$texte&taille=$taille&align=$align\"
alt=\"$texte\" />";
}

Puis vous devez créer un fichier nommé img.php dans le dossier IMG, et y coller ceci :

<?

$welcome_img= imagecreatefrompng("welcome_img.png");
//image de fond a utiliser (en .png)

$text_color=imagecolorallocate($welcome_img,51,0,150);
//couleur du texte

$font="gothicb.ttf";
//police de caracteres
$path="/data/www/m/o/ndomaine.com/html/images/";
//Chemin vers la police
$path="d:\\html\\spip\\IMG\\";

/* Rien a changer apres ceci
-----------------------------
*/

$taille=$HTTP_GET_VARS["taille"];
$texte=$HTTP_GET_VARS["texte"];
$align=$HTTP_GET_VARS["align"];
$box=imagettfbbox ($taille, 0, $path.$font, $texte);
$width=$box[4]-$box[6];
if ($align=="centre"){
$px  = (imagesx($welcome_img)-$width)/2;
}elseif($align=="gauche"){
$px  = 4;
}elseif($align=="droite"){
$px  = imagesx($welcome_img)-$width-5;
}

imagettftext ($welcome_img,$taille,0, $px, 38, $text_color, $path.$font, $texte);
imagesavealpha ( $welcome_img, TRUE);
header("Content-Type: image/png");
header("Expires: " . date("r", time()+7*24*60*60));
imagepng($welcome_img);

?>

Modifier le fichier img.php

Il faut editer quelques lignes : Dans celle-ci,
$welcome_img= imagecreatefrompng("welcome_img.png");
remplacez « welcome_img.png » par le nom de votre image (au format png).

$text_color=imagecolorallocate($welcome_img,51,0,150);
ici, il faut changer les chiffres pour choisir la couleur au format RGB.

$font est le nom de la police à utiliser et $path est le chemin absolu vers cette police. Chez mon hebergeur, le chemin absolu de la racine est /data/www/m/o/ndomaine.com/html/, et chez le vôtre ca depend... On peut l’obtenir grâce à la variable $_SERVER['DOCUMENT_ROOT'] puis y ajouter le chemin relatif vers le fichier de la police de caractère, chez moi /images/, ce qui donne :
/data/www/m/o/ndomaine.com/html/images/

Utiliser le filtre

Pour appeler le filtre, il suffit de faire par exemple : [(#TITRE|enimage)]

Vous pouvez aussi changer la taille du texte par défaut en faisant :
[(#TITRE|enimage{$taille=50})]
ou la hauteur du texte est exprimée en pixels. On peut aussi changer l’alignement par rapport aux bords de l’image en faisant au choix :
[(#TITRE|enimage{$align="gauche"})],
[(#TITRE|enimage{$align="centre"})], ou
[(#TITRE|enimage{$align="droite"})]
Il est bien sur possible de combiner les deux comme ceci :
[(#TITRE|enimage{$align="droite", $taille=30})]

Le résultat

Voici un exemple de ce qu’il est possible d’obtenir :

JPEG - 26.9 ko
Capture d’écran
L’article mis en pratique sur www.parimaterra.org

Avertissement

Attention à une chose toutefois : les images n’étant pas mise en cache, elles sont recalculées à chaque chargement de la page, ce qui sur des sites à forte fréquentation et/ou en hébergement mutualisé, peuvent causer quelques ralentissements et une charge plus importante du serveur.

Chaque cas étant particulier, vous pouvez essayer cette méthode, et si les ralentissements sont trop fréquents, l’abandonner, ou mieux, développer un sytème de cache.

P.-S.

Cette contribution n’est à employer que sur une version 1.7.2 ou 1.8

à cette date, la version de développement de SPIP propose cette fonctionalité avec gestion du cache.

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)