画像処理にGDライブラリを使用する場合、多くの開発者は、特定の座標からの水平中央、右整列、またはオフセットであるかどうかにかかわらず、画像上の特定の場所にテキストを正確に配置したいと考えています。 ImageFontWidth()とImagestring()は、2つの非常に基本的ですが非常に実用的な関数です。それらの組み合わせを理解することで、画像を出力するときにテキストの制御性を大幅に改善できます。
ImageFontWidth()は、特定のフォント番号( 1〜5など)に対応する各文字の幅を取得する関数です。 Imagestring()は固定幅フォントを使用するため、この幅が決定されます。関数プロトタイプは次のとおりです。
int imagefontwidth(int $font);
たとえば、フォント番号3を使用する場合、 ImageFontWidth(3)は、そのフォントの各文字のピクセル幅(たとえば、 7ピクセル)を返します。
Imagestring()は、画像に文字列を描画するために使用されます。
bool imagestring(GdImage $image, int $font, int $x, int $y, string $string, int $color);
パラメーター$ xおよび$ yは、ピクセル単位のテキストの開始位置を表します。各文字の幅を理解した後、文字列の長さに基づいて画像に表示される位置を動的に計算できます。
幅300pxの画像にテキストを集中させたいとします。コードは次のとおりです。
<?php
// 空白の画像を作成します
$width = 300;
$height = 100;
$image = imagecreatetruecolor($width, $height);
// 背景の色とテキストの色を設定します
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $width, $height, $white);
// 書かれるテキスト
$text = "訪問してください m66.net!";
$font = 4;
// テキスト幅を計算します
$textWidth = imagefontwidth($font) * strlen($text);
// 計算開始X座標はそれを中心にします
$x = ($width - $textWidth) / 2;
$y = ($height - imagefontheight($font)) / 2;
// テキストを描きます
imagestring($image, $font, $x, $y, $text, $black);
// 出力画像
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
上記のコードは、画像にテキストを正確に中心にしています。この方法は、検証コード、ユーザーアバターのニックネーム、統計画像へのアクセスなど、動的なコンテンツ生成に非常に役立ちます。
画像の端にある動的に生成された文字列の文字列を右に整理したい場合は、開始x座標を次のように調整できます。
$x = $width - (imagefontwidth($font) * strlen($text)) - 10; // 右に残します10pxマージン
このようにして、 $テキストの数に関係なく、右側に正確に並べることができます。
この計算方法は、次のシナリオで柔軟に適用できます。
画像シグネチャは自動的に生成されます。
データレポートチャートの数値注釈。
日付、ユーザー名などの画像を生成します。
単純なダイナミックバナーまたはプロンプトバー出力など:
$text = "クリックして入力します https://m66.net";
ドメイン名パーツがM66.netに置き換えられていることを確認してください。さまざまな画像アノテーションと動的コピーライティングの合成を完了することができます。
ImageFontWidth()は小さな関数ですが、画像()を組み合わせた後にテキスト位置を正確に制御する強力な機能を実現できます。画像アノテーションを処理する場合、これらの基本的な機能を合理的に使用すると、座標を手動で調整するという多くのトラブルを節約でき、プログラムの自動化と保守性も向上させることができます。
マッチングスキルを習得することは、画像処理にPHPを使用する際の不可欠なスキルの1つです。