Ico JavaScript
Ico CSS
Ico HTML
Ico mooTools
Ico PHP
Ico Astuces

Génération d'une bannière texte

Date 08/09/2010
Ico PHP
Comms 0 commentaire

Le code suivant permet la génération d'un fichier de type PNG à fond transparent contenant un texte blanc détouré de noir.


Tout d'abord, on crée l'image en mémoire. Pour gérer la transparence, il faut utiliser la fonction imagecreatetruecolor() qui va gérer le canal alpha (transparence) :


    $imgtmp = imagecreatetruecolor(740, 50);

    imagecolortransparent($imgtmp, imagecolorallocate($imgtmp, 0, 0, 0));

    imagealphablending($imgtmp, false);

    imagesavealpha($imgtmp, true);


Ensuite on définit quelques variables qui seront utilisées dans les divers appels aux fonctions de création de graphique à partir de texte :


    $fontName = './fonts/OldTypefaces.ttf';

    $fontSize = 30;

    $texte = 'Texte de la bannière';


Ensuite, on génère à l'aide de la fonction imagettftext() l'ombrage de la police avec une couleur sombre, en faisant appel 4 fois à la fonction pour les 4 coordonnées qui nous intéresse, c'est à dire aux positions [x-1, y-1], [x 1, y-1], [x-1, y 1] et [x 1, y 1]. A noter que pour chaque appel on désactivera l'antialiasing en passant l'identifiant de couleur en négatif, sinon le fait de passer l'antialiasing plusieurs fois aura l'effet inverse et aura un rendu horrible au final. Voici le code :


    $couleur = imagecolorallocate($imgtmp, 64, 64, 64);

    imagettftext($imgtmp, $fontSize, 0, 21, 35, -$couleur, $fontName, $texte);

    imagettftext($imgtmp, $fontSize, 0, 23, 35, -$couleur, $fontName, $texte);

    imagettftext($imgtmp, $fontSize, 0, 22, 34, -$couleur, $fontName, $texte);

    imagettftext($imgtmp, $fontSize, 0, 22, 36, -$couleur, $fontName, $texte);


Enfin, on génère le texte en blanc à la position [x, y], en laissant bien l'identifiant de la couleur en positif pour que l'antialiasing fasse son travail :


    $couleur = imagecolorallocate($imgtmp, 236, 236, 236);

    imagettftext($imgtmp, $fontSize, 0, 22, 35, $couleur, $fontName, $texte);


Finalement, on enregistre le fichier PNG et on libère la mémoire :


    imagepng($imgtmp, "images/banniere.png");

    imagedestroy($imgtmp);


En espérant que cela puisse être utile, vu le temps que j'ai passé à essayer de faire fonctionner de manière correcte l'antialiasing !



Vous avez aimé ce billet ?

 

Vous aimerez peut être...
> Les dégradés en CSS3
> Quelques bons scripts MooTools
> Intégrer des polices de caractère personnalisées
> Intégration Google Map
> ComboBox pour envoi de fichiers
 

Mot-clefs de ce billet...
banniere couleur fontname imagettftext imgtmp texte

Commentaires


Aucun commentaire...


Ajouter un commentaire


La validation des commentaires se fait manuellement par l'administrateur du blog. La publication de votre commentaire se fera donc une fois que l'administrateur du blog l'aura accepté. Toutefois, si votre commentaire ne respecte pas les conditions d'utilisation ou s'il est considéré comme spam, il sera supprimé sans être publié.

Auteur
Email
 
(facultatif et caché)
Site web
 
(facultatif)
Message

Ico Valider


MP  Mighty Productions
> Blogs
> Partage de codes sources - PHP / JS / mooTools
> PHP
> Génération d'une bannière texte
 
RSS       Mentions légales       Comms  Haut de la page  
◄ ►