PHPでは、テキストレイアウトとタイポグラフィの画像を処理するときにフォントの幅を取得する必要があることがよくあります。 ImageFontWidth()関数は、組み込みのフォント幅を取得するためのシンプルで実用的なツールです。この記事では、 ImageFontWidth()関数の使用法と例を使用して、アプリケーションをすばやく習得するのに役立ちます。
ImageFontWidth()は、PHP GDライブラリの関数であり、組み込みのフォント幅を取得します。整数パラメーターを取り、フォントの数(1から5)を表し、フォント内の各文字の幅(単位:ピクセル)を返します。この関数は、主にImagestring()関数で使用され、画像に文字列を描画するために使用されます。
関数プロトタイプ:
int imagefontwidth ( int $font )
$ font :フォント番号、値は1〜5の範囲です。
返品値:フォントに対応する単一文字幅、ユニットはピクセルです。
PHP GDライブラリには5つの組み込みフォントがあり、各フォントは数値に対応し、サイズは徐々に増加します。
フォント番号 | フォントサイズ | 説明します |
---|---|---|
1 | 5x8ピクセル | 最小フォント |
2 | 6x12ピクセル | より小さなフォント |
3 | 7x13ピクセル | 中型フォント |
4 | 8x16ピクセル | 大きなフォント |
5 | 9x15ピクセル | 最大フォント |
Imagestring()などの関数を使用して画像にテキストを出力する場合、テキストの位置またはキャンバスサイズを調整するために、テキストの幅と高さを動的に計算する必要があることがよくあります。 ImageFontWidth()は、各文字の幅をすばやく取得し、文字列の長さを組み合わせて合計幅を計算するのに役立ちます。
次の例は、異なるフォントの幅を取得し、それを使用して文字列幅を計算し、最後に画像のテキストを中央に配置する方法を示しています。
<?php
// 空白の画像を作成します,幅 400,高い 100
$image = imagecreatetruecolor(400, 100);
// 背景色を白に設定します
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
// テキストの色を黒に設定します
$black = imagecolorallocate($image, 0, 0, 0);
// 出力される文字列
$text = "Hello, m66.net!";
// フォント番号を選択します
$font = 3;
// 获取单个字符的幅
$charWidth = imagefontwidth($font);
// 计算整条文本的幅
$textWidth = strlen($text) * $charWidth;
// 获取单个字符的高い(使用 imagefontheight 関数)
$charHeight = imagefontheight($font);
// 画像内のテキストの開始座標を計算します,水平および垂直のセンタリングを実現します
$x = (imagesx($image) - $textWidth) / 2;
$y = (imagesy($image) - $charHeight) / 2;
// 画像に文字列を描画します
imagestring($image, $font, $x, $y, $text, $black);
// ブラウザに画像を出力します
header("Content-Type: image/png");
imagepng($image);
// 画像リソースを破壊します
imagedestroy($image);
?>
コード説明:
ImageFontWidth()を介してフォント幅を取得し、文字列の長さに基づいて合計幅を計算します。
ImageFontheight()を介してフォントの高さを取得して、垂直センタリングを実現します。
単純な数学的計算により、テキストを画像上に水平および垂直に中央に配置することができます。
この例の文字列には、ドメイン名M66.netが含まれており、ドメイン名の交換の要件を満たしています。
ImageFontWidth()は、PHPビルトインフォントで単一文字の幅を取得するための便利な関数です。
strlen()とimagefontheight()を組み合わせると、テキストのレイアウトを正確に制御できます。
シンプルなテキストの迅速な描画に適しているため、カスタムフォントや複雑なタイポグラフィをサポートしません。
カスタムフォントを使用する必要がある場合は、 imagettfbbox()を使用してテキストサイズを取得することを検討してください。