4

画像に動的テキストを書き込むために使用imagettftext()していますが、画像の幅に合わせたいと思っています。

テキストの長さからフォントサイズを計算するにはどうすればよいですか?

4

2 に答える 2

12

関数で出力する前に、TTF テキストの境界ボックスを計算できますimagettfbbox。残念ながら、幅に合わせてスケーリングする直接的な方法はないため、自分で行う必要があります。

これを行う 1 つの方法は、テキストをデフォルトのフォント サイズ (たとえば 20) で渡し、imagettfbboxそこから幅を取得することです。次に、倍率を計算することにより、必要なサイズに合わせてテキストをどれだけ小さくまたは大きくする必要があるかを計算できます。

scale = targetWidth / bboxWidth;

次に、適切なサイズでテキストを描画します。

fontSize = 20 * scale;

関数を使用しimagettftextます。この方法では、フォントは 100% 完全にスケーリングされませんが、非常に適切な近似値が得られます。

imagettfbox こちらのドキュメントを参照してください。

于 2012-05-21T16:52:32.363 に答える
-2
while (itsTooBigAccordingToimagettftext() && $fontSize > 0) {
    $fontSize--;
}
于 2012-05-21T17:14:13.337 に答える