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

[Résolu]
Signaler
Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012
-
Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012
-
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

Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012

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..  
Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010

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
Messages postés
94
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
13 juin 2012

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