ImageFontWidth()は、画像処理にPHPのGDライブラリを使用する場合、比較的単純ですが非常に実用的な機能です。その機能は、指定されたフォント番号に対応するフォントの幅を返すことです。ただし、多くの開発者は、フォント番号の実際の重要性と、使用する前の画像レイアウトへの影響を実際に理解していません。この記事では、ImageFontWidth()を呼び出す前に知っておくべき重要な知識ポイントを詳細に調べます。
GDライブラリでは、すべてのフォントが自由に選択されているわけではありません。 PHPは、1〜5の数字の組み込みフォントの事前定義されたセットを提供します。各数値は、モノスパースのさまざまなサイズのフォントのセットに対応します。
フォント番号 | フォント幅 | フォントの高さ |
---|---|---|
1 | 6ピクセル | 8ピクセル |
2 | 8ピクセル | 12ピクセル |
3 | 10ピクセル | 16ピクセル |
4 | 12ピクセル | 16ピクセル |
5 | 12ピクセル | 24ピクセル |
これらの数値は、 ImageString() 、 Imagestringup() 、 ImageChar()などの関数を使用するための基礎です。つまり、 ImageFontWidth()またはImageFontheigh()を呼び出すときに渡す必要があるパラメーターです。
ImageFontWidth()の構文は非常にシンプルです。
$width = imagefontwidth($font);
ここで、 $ fontは上記のフォント番号です。この関数は、フォントの各文字の幅(ピクセル単位)を返します。これは、画像内のテキストの正確な位置と境界ボックスを計算する場合に重要です。
たとえば、フォント番号3を使用して「Hello」を出力するとします。
$font = 3;
$text = "Hello";
$textWidth = imagefontwidth($font) * strlen($text);
これにより、このテキストの出力に必要な幅が10 * 5 = 50ピクセルであることがわかります。
フォント幅を理解したら、画像にテキストをより正確に描画できます。
$img = imagecreate(200, 50);
$bg = imagecolorallocate($img, 255, 255, 255);
$color = imagecolorallocate($img, 0, 0, 0);
$text = "Welcome!";
$font = 4;
$x = (200 - imagefontwidth($font) * strlen($text)) / 2;
$y = (50 - imagefontheight($font)) / 2;
imagestring($img, $font, $x, $y, $text, $color);
header("Content-Type: image/png");
imagepng($img);
imagedestroy($img);
このコードは「ようこそ!」 200x50の白い画像で。
簡単な検証コードを作成するときは、次のロジックを記述して、適切な幅の画像を動的に作成できます。
$code = "ABCD";
$font = 5;
$width = imagefontwidth($font) * strlen($code);
$height = imagefontheight($font);
$image = imagecreate($width + 20, $height + 10); // 余分な空白
このようにして、テキストや過度の画像の過密、帯域幅を無駄にすることを避けるために、さまざまな長さの検証コードに従って画像サイズを自動的に調整できます。
ImageFontWidth()は、組み込みのフォント(番号1〜5)でのみ動作し、 ImageTtftext()を介して使用されるTrueTypeフォントには当てはまりません。
違法なフォント番号が渡された場合、関数はfalseを返します。
一部のフォント(数字4や5など)は同じ幅ですが、高さは異なるため、 ImageFontWidth ()だけに依存しないでください。
次のようなテキストで動的な画像リンクを生成している場合:
$url = "https://m66.net/generate-image.php?text=HelloWorld";
サーバー側の正確な画像生成を容易にするために、このテキストのピクセルが画像内にある時間を事前に知りたい場合があります。この時点で、 ImageFontWidth()の組み合わせを使用できます。
$font = 2;
$text = "HelloWorld";
$width = imagefontwidth($font) * strlen($text);
// セットアップに使用できます canvas またはパラメーター検証
このタイプのアプリケーションは、画像署名生成や短いリンク画像生成などのシステムで非常に一般的です。
実際の開発では、フォント数の役割とImageFontWidth()の意味を無視すると、テキスト表示位置を相殺したり、レイアウトを混乱させるなどの問題につながります。 PHPの組み込みフォントメカニズムを理解することは、GD画像処理の習得における重要なステップです。フォント幅を正確に計算することにより、テキストをより美しく表示するだけでなく、よりスマートな画像生成システムを構築できます。
これらの基本を習得することにより、PHP画像処理スキルは新しいレベルになります。