Dans PHP, ImagetFText () est une fonction très pratique pour ajouter du texte basé sur la police TrueType (TTF) sur une image. Grâce à cette fonction, vous pouvez contrôler avec précision le style, la taille, la couleur, la position et même l'angle de rotation du texte. Aujourd'hui, nous nous concentrerons sur la fonction de rotation de texte dans la fonction ImageTtFtext et fournirons des solutions à des problèmes communs.
La syntaxe de base de la fonction ImagetFText () est la suivante:
<span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$size</span></span><span>, </span><span><span class="hljs-variable">$angle</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>
$ Image : la ressource d'image pour ajouter du texte.
$ Taille : la taille de la police du texte.
$ Angle : L'angle de la rotation du texte, l'unité est degrés (les nombres positifs représentent la rotation dans le sens antihoraire et les nombres négatifs représentent la rotation dans le sens des aiguilles d'une montre).
$ x , $ y : la coordonnée de position de départ du texte (coin inférieur gauche).
$ couleur : la couleur du texte, généralement une ressource couleur créée par ImageColorAllocate () .
$ FONTFILE : Le chemin du fichier de police TrueType.
$ Text : le contenu du texte à afficher.
L'une des caractéristiques de base de la fonction ImageTtFText () est sa fonction de rotation de texte, qui est spécifiquement implémentée via le paramètre Angle $ . En ajustant la valeur de ce paramètre, nous pouvons contrôler l'angle de rotation du texte. L'unité d'angle de rotation est degrés, une valeur positive indique une rotation dans le sens antihoraire et une valeur négative indique une rotation dans le sens des aiguilles d'une montre.
Par exemple, si nous voulons que le texte tourne à 45 degrés dans le sens des aiguilles d'une montre, nous pouvons l'appeler comme ceci:
<span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">150</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span></span>
Cette ligne de code fera tourner le "Hello, World!" Texte dans la police 20, dans le sens horaire de 45 degrés, et dessinez-le sur l'image avec des coordonnées (100, 150).
Lors du texte en rotation, vous pouvez rencontrer des problèmes avec le calcul de la position du texte. Étant donné que la boîte de délimitation du texte changera également une fois qu'elle tourne, il convient de noter que le texte tourné n'est pas toujours basé sur la position d'origine.
Une solution courante consiste à utiliser la fonction Imagettfbbox () pour obtenir la boîte de délimitation du texte tourné. Cette fonction renvoie les quatre coordonnées du coin du texte. En combinant ces informations, vous pouvez calculer la position texte correcte.
<span><span><span class="hljs-variable">$bbox</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagettfbbox</span></span><span>(</span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span><span><span class="hljs-variable">$x</span></span><span> = </span><span><span class="hljs-number">100</span></span><span> - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; </span><span><span class="hljs-comment">// Ajustez la position de départ en fonction de la boîte de délimitation</span></span><span>
</span><span><span class="hljs-variable">$y</span></span><span> = </span><span><span class="hljs-number">150</span></span><span> - </span><span><span class="hljs-variable">$bbox</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">imagettftext</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, -</span><span><span class="hljs-number">45</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$color</span></span><span>, </span><span><span class="hljs-variable">$fontfile</span></span><span>, </span><span><span class="hljs-string">"Hello, World!"</span></span><span>);
</span></span>
Lors de la rotation du texte, des problèmes de décalage de texte peuvent se produire. Cela est généralement dû au fait que le texte tourné fait changer sa boîte de délimitation. La solution consiste à utiliser la fonction ImageTtFBBox () pour calculer la limite du texte tourné, puis ajuster les coordonnées du texte en fonction des besoins réels.
Si vous ajoutez plusieurs textes tournés à la même image, un chevauchement de texte peut se produire. La solution consiste à ajuster manuellement les coordonnées $ x et $ y de chaque texte, ou utiliser une boucle pour générer plusieurs textes et spécifier différentes coordonnées de démarrage pour chaque texte.
Parfois, le texte tourné peut sembler flou ou déformé, en particulier à des tailles de police plus petites. Ce problème est généralement lié à la résolution de l'image. Pour résoudre ce problème, vous pouvez essayer d'augmenter la résolution de l'image (c'est-à-dire augmenter la largeur et la hauteur de l'image), puis remonter à la taille cible.
Assurez-vous que l'angle de rotation est correct, en particulier lorsque vous utilisez des valeurs négatives. Parce que dans PHP, l'angle de rotation de la fonction ImagettfText () est positif dans le sens antihoraire et négatif dans le sens horaire. Si vous rencontrez une situation où la direction de rotation est opposée, vous pouvez essayer d'ajuster le signe de l'angle.
La fonction de rotation de texte dans la fonction ImagettfText () est un outil très puissant qui peut aider les développeurs à ajouter du texte rotatif de manière flexible dans les images. En utilisant rationnellement l'angle de rotation et en combinant l'imagettfbbox () pour calculer la boîte de délimitation, des problèmes tels que l'écart de position et le chevauchement se produisent pendant la rotation peuvent être résolus efficacement. Avec ces compétences maîtrisées, vous pouvez gérer plus facilement les opérations d'image avec du texte tourné.