Le calcul de la Largeur du Texte avec PHP GD
J'essaye simplement d'obtenir la largeur d'une ligne de texte pour l'ajout d'une image générée avec GD de PHP. Je suis un peu incertain comment si. Je sais comment charger une police à l'aide de imageloadfont(), mais puis-je utiliser un .ttf fichier? Je veux savoir la largeur du texte en utilisant la police arial de taille 12. Lorsque j'essaie d'utiliser mon ttf fichier, j'obtiens le message d'erreur "Erreur lors de la lecture de police, de police non valides en-tête." Si j'ai besoin d'un .fichier gdf, où puis-je trouver une police de taille 12 fichier gdf? Voici mon code:
$newfont = imageloadfont("../fonts/arial.ttf");
$font_width = imagefontwidth($newfont);
$font_height = imagefontheight($newfont);
Jetez un oeil à imagettfbbox et imagettftext.
OriginalL'auteur Colin | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
imageloadfont()
est utilisé pour charger défini par l'utilisateur des images bitmap. Si vous voulez juste utiliser la police Arial ou toutes les autres polices TrueType (.ttf) ou OpenType (.otf) (support pour le dernier de la librairie GD est buggé), alors ce que vous avez besoin estimagettftext()
. Avant d'utiliserimagettftext()
et l'écriture d'un texte à votre image, vous devez d'abord savoir si il sera en forme. Pour le savoir il suffit d'appeler, pourimagettfbbox()
et la passer à la taille de la police, de l'angle du texte (0 pour le texte horizontal), le chemin d'accès à votre .ttf ou .la fto fichier de police et de la chaîne de texte lui-même et il retournera un tableau de 8 éléments représentant les quatre points de la boîte englobante du texte (vérifiez le manuel PHP pour plus de détails). Vous pouvez alors faire référence à ces éléments de tableau et effectuer des calculs afin de connaître la largeur et la hauteur que cette chaîne de texte. Vous pouvez ensuite utiliser ces valeurs pour créer une image avec une largeur et une hauteur spécifique qui permettra le texte à afficher dans son intégralité.Voici un script simple qui accomplit ce que vous essayez de faire pour vous aider à démarrer:
Modifier les valeurs en conséquence pour s'adapter à vos besoins. N'oubliez pas de lire le manuel PHP.
Désolé, mais cette chose ne fonctionne pas. C'est ce qu'il génère avec le texte
"666"
(ou tout autre nombre autant que je sache) et la police Courier New. Il ne fonctionne pas vraiment avec les autres polices soit - toujours des réductions quelque chose ici et là. Je comprends que ce n'est pas de votre faute, que les gens derrière PHP sont incompétents, mais encore un downvote.un Autre exemple où j'ai mis en évidence ce qui est mauvais.
il m'a aidé, même s'il est coupé dans le texte comme
q
OriginalL'auteur hallaplay835
Avec GD2, le imagettfbbox's taille de la police doivent être en PTs, pas de Pixels par la suite convertir:
OriginalL'auteur Sentence