画像処理を実行する場合、画像にテキストを動的に中心にすることは、一般的なニーズの1つです。 PHPのGDライブラリは、開発者がそのようなタスクを処理するのに役立つ一連の機能を提供します。この記事では、簡単な例を使用して、これら2つの機能を使用してテキストの水平センタリング表示を実現する方法を説明します。
この関数は、指定されたフォント幅のピクセル値を返します。フォント番号はGDによって事前に定義されています。1〜5の場合、数が大きくなるほど、フォントが大きくなります。
int imagefontwidth(int $font);
この関数は、画像に文字列を書き込むために使用されます。
bool imagestring(GdImage $image, int $font, int $x, int $y, string $string, int $color);
パラメーター説明:
$画像:画像リソース
$ font :フォント番号(1〜5)
$ x 、 $ y :テキストライティングの開始位置
$文字列:書かれるテキスト
$色:色インデックス値
例として、400ピクセルの幅と100ピクセルの高さで写真を撮り、テキストの段落を写真に中央に配置しましょう。
<?php
// キャンバスを作成します
$width = 400;
$height = 100;
$image = imagecreate($width, $height);
// 色を設定します
$background_color = imagecolorallocate($image, 255, 255, 255); // 白い背景
$text_color = imagecolorallocate($image, 0, 0, 0); // 黒いテキスト
// 書かれるテキスト
$text = "訪問してください m66.net";
$font = 5;
// テキスト幅を計算します
$text_width = imagefontwidth($font) * strlen($text);
// 計算しますX座標,テキストを中央に配置します
$x = ($width - $text_width) / 2;
// Y座標(垂直位置)カスタマイズ可能,これは単に垂直中心に設定されています
$y = ($height - imagefontheight($font)) / 2;
// テキストを書きます
imagestring($image, $font, $x, $y, $text, $text_color);
// ブラウザに画像を出力します
header("Content-Type: image/png");
imagepng($image);
// 無料のメモリ
imagedestroy($image);
?>
フォントの制限: ImageFontWidth()は、 ImageString()で使用される内蔵フォントにのみ適用されます。テキストスタイルと位置をより詳細に制御する必要がある場合は、 ImagetTftext()を検討する必要があります。
マルチバイト文字:中国語の処理時にStrlen()は不正確です。代わりにMB_STRLEN()を使用するか、文字幅を推定できます。
パフォーマンスの最適化:頻繁に生成される画像コンテンツについては、繰り返しの操作を避けるためにキャッシュメカニズムを検討してください。
この方法は、 https://m66.netなどのカスタムショートURLプラットフォームで、検証コード、画像透かし、QRコードキャプション、または画像テキストの合成を動的に生成するのに適しています。
いくつかの機能の単純な組み合わせにより、実用的で柔軟なテキストセンタリング機能を達成でき、ユーザーエクスペリエンスと画像プレゼンテーションのプロフェッショナリズムを大幅に改善できます。