ImageFontWidth()は、画像処理にPHPのGDライブラリを使用する場合、比較的基本的ですが非常に実用的な機能です。通常、画像上のテキストのレイアウトを正確に制御するために、Imagestring()などの関数で使用されます。 ImageFontWidth()の返品値を理解すると、画像を動的に生成するときにテキストの幅をより正確に計算し、境界またはタイポグラフィの混乱を超えるテキストの問題を回避することができます。
ImageFontWidth()は、パラメーターを取得するPHP GDライブラリの関数です - フォントサイズ(またはフォント識別子)は、フォント内の各文字の水平ピクセル幅を返します。この関数の戻り値は、フォント内の任意の文字の幅(ピクセル単位)を表す整数です。
$width = imagefontwidth(5);
echo $width; // フォント番号を出力します 5 文字幅
ImageFontWidth()で使用されるパラメーターは、任意ではなく、PHPによって提供される事前定義されたフォント識別子のセットです。それらは通常、組み込みの固定幅フォントに対応する1から5の整数です。
1 :最小限のフォント、狭い幅
2 :少し大きい
3 :中サイズ
4 :わずかに大きい
5 :最大の内蔵フォント
たとえば、フォント識別子1を使用している場合、 ImageFontWidth(1)が5を返す場合があります。つまり、各文字は幅5ピクセルです。フォント識別子5である場合、各文字が幅9ピクセルを占有していることを示します。
戻り値は、水平方向のキャラクターが占めるピクセル幅を表す整数です。つまり、写真に一連のキャラクターを描きたい場合、たとえば:
$text = "Hello, World!";
次に、次の方法で文字列の全体の幅を計算できます。
$font = 5;
$width = imagefontwidth($font) * strlen($text);
この幅はあなたを助けることができます:
センターアライメントテキスト:テキストの幅を2つ除算して、テキストの幅を差し引くことで、テキストの開始水平座標を取得できます。
テキストが境界をオーバーフローするかどうかを判断します。画像の幅に基づいて短縮またはラインブレークテキストが必要かどうかを判断できます。
正確なポジショニングを実装する:この値は、ピクセルレベルの要件が高い画像レイアウトにとって非常に重要です。
200ピクセルの幅の画像にテキストを集中させる必要があると仮定します。
$text = "Hello";
$font = 3;
$image = imagecreate(200, 50);
$bg = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);
$text_width = imagefontwidth($font) * strlen($text);
$x = (200 - $text_width) / 2;
$y = 20;
imagestring($image, $font, $x, $y, $text, $text_color);
imagepng($image, 'output.png');
imagedestroy($image);
この例では、 ImageFontWidth()を使用して各文字の幅を取得し、テキスト全体のピクセル幅を計算するために文字の総数を掛けて、中心的なディスプレイを実現します。
ImageFontWidth()は、内蔵フォントでのみ動作します。 imagettftext()で使用されるTrueTypeフォントの場合、width計算をimagettfbbox()を使用して計算する必要があります。
返品値は、カスタムフォント自体をサポートしていないフォント番号の影響を受けます。