Ecrire un texte dans une image mais aligné à droite

Eléphanteau du PHP | 11 Messages

13 juin 2021, 15:59

Bonjour,
Dans la fonction imagettftext, le 4e paramètre indique les coordonnées du point de début de l'écriture, donc le point de mon premier caractère.
Pour un petit script de création d'image et de données sur une carte, j'aurais aimé pouvoir définir les coordonnées du point de fin d'écriture (un peu comme si j'alignais mon texte à droite sur ma carte).
J'ai donc créé cette valeur "$coordonnee_texte_droite" qui reprend la coordonnée la plus à droite (350) et en retire le nombre de caractères que je multiplie par 6 pour avoir un semblant d'espace d'un caractère.

En exemple :

Code : Tout sélectionner

$coordonnee_texte_droite= 350 - strlen($texte_utilisateur)*6; imagettftext($conteneur, 11, 0, $coordonnee_texte_droite, 115, $noir_fondu, $font2, $texte_utilisateur);
Hors, le caractère I a moins d'espace que le caractère M.... donc pour un mot comme IIIIIII, j'ai 3x plus d'espace que MMMMM qui colle à la bordure.
Est-ce qu'il y a un moyen en PHP de pouvoir aligner toute une chaîne de caractères à droite (que la dernière lettre soit toujours à la coordonnée du point de fin d'écriture) ?
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

14 juin 2021, 11:59

C'est possible avec la fonction imagettfbbox() de connaitre la place prise par un texte :
https://php.net/imagettfbbox
Quand tout le reste a échoué, lisez le mode d'emploi...