GD: optimisation de la taille d'une image en fonction du texte pour une Fonts tt

Résolu
Mastronic Messages postés 94 Date d'inscription lundi 8 août 2005 Statut Membre Dernière intervention 13 juin 2012 - 27 déc. 2006 à 12:46
Mastronic Messages postés 94 Date d'inscription lundi 8 août 2005 Statut Membre Dernière intervention 13 juin 2012 - 27 déc. 2006 à 14:23
Bonjour,

Existe t'il une fonction qui permet de me retourner la place que va prendre la police de type ttf.
But: creer une image (imagecreatetruecolor) de bonne dimention qui englobe le texte..
texte ecris via la fonction imagettftext()

Ancienne solution ?
Au par avant il existé les fonction imagefontheight() et imagefontwidth() qui envoie la taille de la police par défaut.. Le texte etait ecris avec  imagestring()
La police de défaut peut etre rechargé par la fonction imaheloadfont() mais celle-ci accepte des polices avec des extensions GDF.
Et d'apres la doc: "Le format des polices dépend actuellement du système d'exploitation. Ce qui signifie qu'il vous faut générer des fichiers de polices pour la machine qui fait tourner PHP."

Donc je ne sais pas si nous pouvons le faire de la meme facon avec le ttf...

Autre solution a mes yoeux
imagettftext() retourne un tableau de 8 éléments représentant quatre points marquants les limites du texte. donc il serait possible de déterminé la taille du texte en utilisant une image temporaire de grande dimention.
La seconde serait de bonne taille..

autre astuce, solution ou remarque?
 
D'avance merci.

3 réponses

Mastronic Messages postés 94 Date d'inscription lundi 8 août 2005 Statut Membre Dernière intervention 13 juin 2012
27 déc. 2006 à 14:23
Trouvé!

imagettfbbox() Retourne le rectangle entourant un texte et dessiné avec une police TrueType.

 $txtsize =ImageTtfBBox($size,$angle,$font,$string);

Avec cette solution, pour trouver l'encombrement que le texte prendra, il ne faut pas creer d'image temporaire.

En plus je l'utilisé dans un de mes scripts.. arf..


Escusé moi pour ledérangement.. cela servira peut etre pour d'autre..  
3
cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
27 déc. 2006 à 13:25
Salut

Détrompe moi mais si cette fonction te renvoie les coordonnées de tes quatres points... en faisant une simple soustraction du dois pouvoir connaître la distance en pixels entre tes points... donc ta taille...

          A (x1, y1)    +                                                                         + B (x2, y2)

          C (x3, y3)    +                                                                         + D (x4, y4)

 Ta largeur serait donc de x2 - x1 (ou x4 - x3, c'est id) pixels et ta hauteur de y3 - y1 (ou y4 - y2).

Je pense pas que ce soit plus compliqué que ça, si jamais ce que tu as écris au sujet du retour de la fonction est bonne (j'ai pas vérifié)

Flo
0
Mastronic Messages postés 94 Date d'inscription lundi 8 août 2005 Statut Membre Dernière intervention 13 juin 2012
27 déc. 2006 à 13:37
Merci pour ta réponse mfaraday,
oui, ces la solution que je retiens pour l'instant.. mais pour faire cela il faut creer 2 images.. l'une de grande taille.. l'autre la bonne avec la largeur et hauteur calculé..

mais il existe peut etre une autre solutions plus direct.. ces celle la que je recherche.. car la solution de deux images, je trouve ca un peu programmeur bricolo dans son garage lol ..
Cela dit, je ne dit pas que je suis pro.. mais j'essaye de les imités.. ^^

je laisse le post ouvert.. pour une solution plus direct


 


 
0
Rejoignez-nous