PHPでは、 ImageFtText関数は、画像にテキストを描画するための強力なツールです。 TrueTypeフォントと複雑なテキストタイプセットをサポートします。テキスト色を適切に指定することは、 ImageFtTextを使用するキーの1つです。この記事では、テキストの色を正しく設定し、例を通じてよりよく理解する方法を詳細に紹介します。
ImageFtText関数は次のように定義されています。
array imagefttext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text [, array $extrainfo = null ] )
$画像:ターゲット画像リソース
$サイズ:フォントサイズ
$角:テキスト回転角
$ x 、 $ y :テキストは座標を開始します
$ color :テキストの色、イメージコロラロケート関数を使用して取得します
$ fontfile :フォントファイルパス
$テキスト:描画するテキストコンテンツ
$ extrainfo :追加情報、通常は利用できません
テキストの色は、4つのパラメーターを受け入れるImageColorAllocate()関数を介して割り当てられます。
int imagecolorallocate(resource $image, int $red, int $green, int $blue)
$画像:ターゲット画像リソース
$ red 、 $ green 、 $ Blue :色のRGBコンポーネント、値範囲は0-255です
たとえば、赤はImageColorAllocate($ image、255、0、0)で取得できます。
注:
テキストを描画する前に色を割り当てる必要があります。
色割り当ての後、整数識別子が返され、この値はImageFtText関数の$カラーパラメーターに渡す必要があります。
異なる画像リソースの色識別子は独立しており、画像間で使用することはできません。
$image = imagecreatetruecolor(400, 200);
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白
imagefilledrectangle($image, 0, 0, 399, 199, $bg_color);
$text_color = imagecolorallocate($image, 0, 0, 255); // 青
たとえば、フォントファイルは実際のTTFファイルパスである必要があります。
$font_path = 'gitbox.net/fonts/arial.ttf';
注:ドメイン名の部分はgitbox.netに置き換えられ、サーバー上のフォントファイルの実際のパスに置き換える必要があります。
$text = "Hello, PHP imagefttext!";
$size = 20;
$angle = 0;
$x = 10;
$y = 50;
imagefttext($image, $size, $angle, $x, $y, $text_color, $font_path, $text);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
<?php
// 画像リソースを作成します
$image = imagecreatetruecolor(400, 200);
// 背景の色を割り当てて塗りつぶします
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, 399, 199, $bg_color);
// テキストの色を割り当てます
$text_color = imagecolorallocate($image, 0, 0, 255);
// フォントパス(パスが正しいことを確認してください)
$font_path = 'gitbox.net/fonts/arial.ttf';
// 描画されるテキスト
$text = "Hello, PHP imagefttext!";
$size = 20;
$angle = 0;
$x = 10;
$y = 50;
// テキストを描きます
imagefttext($image, $size, $angle, $x, $y, $text_color, $font_path, $text);
// 出力画像
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
フォントファイルが見つかりません<br> フォントファイルパスが正しいことを確認してください。 ImageFtTextは、フォントファイルを自動的に検索できません。パスは、サーバー上の有効なパスでなければなりません。
無効な色または異常なディスプレイ<br> ImageColorAllocate関数が正しく使用され、色識別子がImageFtTextに渡されるかどうかを確認してください。
表示されていないテキスト<br> 座標が画像範囲内にあるかどうか、およびフォントサイズと角度が妥当かどうかを確認してください。