PHPでは、画像を処理するときにGDライブラリがよく使用され、フォント関連の関数ImageFontWidth()は非常に一般的な関数です。指定されたフォントの幅を取得するのに役立ち、テキストを描画するときにレイアウトを正確に制御できます。ただし、 ImageFontWidth()を使用すると、多くの開発者が質問があります。「ピクセル」または「文字」の単位で返される幅はありますか?この関数の幅ユニットを正確に理解する方法は?
この記事では、PHP関数ImageFontWidth()の動作原理と幅ユニットのその意味を深く分析し、画像ワードプロセッシングのために使用するのに役立ちます。
ImageFontWidth()関数は、指定された組み込みフォント(つまり、GDライブラリによって定義されたフォント)の単一文字の幅を取得するために使用されます。その関数プロトタイプは次のとおりです。
int imagefontwidth ( int $font )
$ fontは、通常1〜5の範囲のGDライブラリに内蔵フォントの数を表す整数です。
戻り値は、フォント内の単一の文字の幅であり、ユニットはピクセルです。
簡単に言えば、この関数を呼び出すと、このフォントを使用して文字を描画するときの幅の数を知ることができます。
ImageFontWidth()は、ピクセルで幅を返します。これはつまり:
幅は多数の文字ではなく、多くのポイントでもありません。
幅は画像ピクセルの実際の幅であり、画像座標系で直接使用するのに便利です。
例えば:
<?php
$font = 3; // 内蔵フォント3
$width = imagefontwidth($font);
echo "フォント3文字幅はです:{$width} ピクセル";
?>
出力は次のとおりです。
フォント3文字幅はです:7 ピクセル
これは、フォント3で文字を描くときに、7ピクセルの水平スペースを占めることを示しています。
ImageFontWidth()はピクセル幅を返すため、テキスト全体の幅を文字の数と組み合わせて計算できます。たとえば、文字列「hello」を描画します:
<?php
$font = 3;
$text = "Hello";
$char_width = imagefontwidth($font);
$text_width = $char_width * strlen($text);
echo "文字列幅はです:{$text_width} ピクセル";
?>
ここでは、文字列の長さストレン($テキスト)を掛けて、文字列全体の幅を取得します。これは、画像キャンバスサイズを設定するか、テキストの開始点を配置するのに便利です。
注:これは、 GDライブラリの組み込みフォント( ImageString()関数で使用されるフォント)で機能します。 TTFフォント幅を計算するには、他の方法が必要です。
ビルトインフォントを使用してテキストを描画し、 ImageFontWidth()に基づいてテキスト幅を動的に計算する方法の完全な例を示します。適切な画像サイズを作成します。
<?php
// 选择内蔵フォント
$font = 4;
$text = "PHP Font Width";
// 単一の文字幅と高さを取得します
$char_width = imagefontwidth($font);
$char_height = imagefontheight($font);
// 文字列の総幅と高さを計算します
$text_width = $char_width * strlen($text);
$text_height = $char_height;
// 画像キャンバスを作成します,幅に少しマージンを残します
$image = imagecreate($text_width + 20, $text_height + 20);
// 色を設定します
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白い背景
$text_color = imagecolorallocate($image, 0, 0, 0); // 黒いテキスト
// 文字列を描きます,位置(10,10)保証されたマージン
imagestring($image, $font, 10, 10, $text, $text_color);
// ブラウザに画像を出力します
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
この例では:
ImageFontWidth()とImageFonTheIght()を使用して、文字の幅と高さ(両方ともピクセル)を取得します。
文字列の長さに基づいて、必要なキャンバス幅を計算します。
テキストを描画した後、生成された画像サイズはテキスト表示にぴったりです。
<code>タグにコードを記述し、コードでURLを使用する必要がある場合は、ドメイン名をM66.netに置き換えてください。
$url = "https://m66.net/path/to/resource";
これにより、記事のコード例のドメイン名が一貫していることが保証されます。
ImageFontWidth()関数は、単一の文字の幅を返し、ユニットはピクセルです。
幅は文字の数ではなく、画像上の文字の実際のピクセル幅です。
文字の数と組み合わせると、文字列の幅全体を計算できるため、画像を描画して入力しやすくなります。
TrueTypeフォントではなく、GDビルトインフォントにのみ適用されます。
これを理解することで、画像テキストのレイアウトをより正確に制御し、PHP画像処理の品質を向上させるのに役立ちます。