imagefttext

FreeType 2 によるフォントを用いてイメージにテキストを描画する

説明

arrayfalse imagefttext(
    GdImage $image,
    float $size,
    float $angle,
    int $x,
    int $y,
    int $color,
    string $font_filename,
    string $text,
    array $options = []
)

注意:

PHP 8.0.0 より前のバージョンでは、 imagefttext は、 imagettftext を拡張したものでした。 options を追加でサポートしていました。 PHP 8.0.0 以降では、 imagettftextimagefttext のエイリアスになっています。

パラメータ

image

imagecreatetruecolorのような画像作成関数が返す GdImage オブジェクト。

size

使用するフォントのサイズ (ポイント数)。

angle

角度 (度数)。0 度は、左から右に読むテキストを表します。 度数を上げていくと、反時計回りに回転します。たとえば、 90 度の場合は下から上に読むテキストとなります。

x

xy で表す座標が、最初の文字のベースポイント (その文字の左下の角とほぼ等しい点) となります。 imagestring の場合は xy で最初の文字の左上の角を指定しており、 たとえば "左上" は 0, 0 となりますが、この関数では異なります。

y

y 座標。これはフォントのベースラインを指定するものであり、 文字の最下端を指定するものではありません。

color

テキストに使用する色のインデックス。 imagecolorexact を参照ください。

font_filename

使用する TrueType フォントへのパス。

PHP が使用している GD ライブラリのバージョンにも依存しますが、 font_filename の先頭に / がついていない場合はファイル名の末尾に .ttf を追加して GD のフォントパスからファイルを探そうとすることもあります。

たいていの場合は、スクリプト内で使うフォントの場所は同じディレクトリになるでしょう。 そんな場合は、次のようにすれば読み込み時の問題を回避できます。

<?php
// GD 用の環境変数を設定します
putenv('GDFONTPATH=' . realpath('.'));

// 使用するフォント名を指定します (拡張子 .ttf がないことに注目しましょう)
$font = 'SomeFont';
?>

text

画像に挿入するテキスト。

options

options の配列のインデックス
キー 意味
linespacing float 描画時の行間を定義します

戻り値

この関数は、長方形の 4 つの角を表す点の配列を返します。 最初が左下の位置で、そこから反時計回りに回ります。

0 左下の x 座標
1 左下の y 座標
2 右下の x 座標
3 右下の y 座標
4 右上の x 座標
5 右上の y 座標
6 左上の x 座標
7 左上の y 座標

失敗時には、false を返します。

変更履歴

バージョン 説明
8.0.0 image は、 GdImage クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な gd resource が期待されていました。

例1 imagefttext の例

<?php
// 300x100 の画像を作成します
$im = imagecreatetruecolor(300, 100);
$red = imagecolorallocate($im, 0xFF, 0x00, 0x00);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

// 背景を赤にします
imagefilledrectangle($im, 0, 0, 299, 99, $red);

// ttf フォントファイルへのパスを設定します
$font_file = './arial.ttf';

// フォントサイズ 13 で 'PHP Manual' というテキストを描画します
imagefttext($im, 13, 0, 105, 55, $black, $font_file, 'PHP Manual');

// 画像をブラウザに出力します
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

注意

注意: この関数は、PHP が FreeType サポート (--with-freetype-dir=DIR) を有効にしてコンパイルされている場合のみ使用可能です。

参考

  • imageftbbox
  • imagettftext