画像に動的テキストを書き込むために使用imagettftext()
していますが、画像の幅に合わせたいと思っています。
テキストの長さからフォントサイズを計算するにはどうすればよいですか?
画像に動的テキストを書き込むために使用imagettftext()
していますが、画像の幅に合わせたいと思っています。
テキストの長さからフォントサイズを計算するにはどうすればよいですか?
関数で出力する前に、TTF テキストの境界ボックスを計算できますimagettfbbox
。残念ながら、幅に合わせてスケーリングする直接的な方法はないため、自分で行う必要があります。
これを行う 1 つの方法は、テキストをデフォルトのフォント サイズ (たとえば 20) で渡し、imagettfbbox
そこから幅を取得することです。次に、倍率を計算することにより、必要なサイズに合わせてテキストをどれだけ小さくまたは大きくする必要があるかを計算できます。
scale = targetWidth / bboxWidth;
次に、適切なサイズでテキストを描画します。
fontSize = 20 * scale;
関数を使用しimagettftext
ます。この方法では、フォントは 100% 完全にスケーリングされませんが、非常に適切な近似値が得られます。
imagettfbox
こちらのドキュメントを参照してください。
while (itsTooBigAccordingToimagettftext() && $fontSize > 0) {
$fontSize--;
}