画像処理にPHPを使用する場合、組み込みのGDライブラリは、 ImageString() 、 Imagettftext()などの関数を提供してテキストを描画します。 BitMapフォントの場合、 ImageFontWidth()とImageFontheIght()を使用してフォントのサイズを取得して、画像内の文字の位置、アライメント、またはテキストラッピング境界を正しく計算できます。
この記事では、これら2つの機能の使用を紹介し、それらを一緒に使用してテキストの全体的な幅と高さを計算して、画像内のテキストコンテンツを正確にレイアウトできるようにする方法を示します。
int imagefontwidth(int $font);
この関数は、指定されたフォント番号に対応する単一文字の幅(ピクセル)を返します。
int imagefontheight(int $font);
この関数は、指定されたフォント番号に対応する単一の文字の高さ(ピクセル)を返します。
PHPのGDライブラリは、5つの内蔵フォント(1から5までの数)を提供し、数が大きいほどフォントが大きくなります。
文字列全体を描画した後に必要なピクセル領域サイズを取得するには、単一の文字の幅と高さを文字列の長さと組み合わせるだけです。
$text = "Hello, PHP!";
$font = 3; // 利用可能な範囲はです 1 到着 5
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
$textWidth = strlen($text) * $charWidth;
$textHeight = $charHeight;
echo "テキスト幅: {$textWidth}px\n";
echo "テキストの高さ: {$textHeight}px\n";
このコードスニペットは、Font 3を使用してテキスト「Hello、PHP!」のピクセル幅と高さを描画する方法を教えてくれます。 。
テキストを保持し、PNGとして出力する画像にテキストを描画するための完全な例を次に示します。
<?php
$text = "Hello, PHP!";
$font = 3;
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
$textWidth = strlen($text) * $charWidth;
$textHeight = $charHeight;
$image = imagecreate($textWidth, $textHeight);
$background = imagecolorallocate($image, 255, 255, 255); // 白い背景
$textColor = imagecolorallocate($image, 0, 0, 0); // 黒いテキスト
imagestring($image, $font, 0, 0, $text, $textColor);
// 出力画像
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
上記のコードをPHPファイルとして保存し、サーバーからアクセスして生成された画像を表示します。この例は、マージンの追加、アライメントの中心、複数のテキストの描画など、さらに拡張できます。
この方法は一般的に使用されます。
検証コード写真を動的に生成します。
透かし式画像を作成します。
シンプルな署名バー、ユーザー名タグなどを作成します。
背景は、アイコンに番号を追加するなど、通知画像を生成します。
たとえば、サイトにそのような関数を展開するhttps://www.m66.net/gen.php?text=hellophpは、パラメーター化された画像生成を有効にすることができます。
ImageFontWidth()とImageFonTheIght()を使用して、フォントの単一文字幅と高さを取得し、文字列の長さを組み合わせてテキスト全体のピクセル領域サイズを簡単に計算します。この方法はTTFフォントほど柔軟ではありませんが、パフォーマンスとシンプルさが必要なシナリオでは依然として非常に実用的です。この記事が、画像内のテキストの場所とレイアウトをよりよく制御できるようになることを願っています。