PHPのimagettfbboxを使って文字列を正しい位置に印字する方法

Pocket

PHPのimagettfbboxを使うと、imagettftextで文字列を描画したときの文字列が表示される範囲を取得できます。

まずimagettftextを説明します。
imagettftext($img, $size, 0, $x, $y, $color, $fontfile, $text);
とすると$textで指定した文字列が描画されます。
ベースポイント(左下の座標)が$x,$yとなります。
この場合、描画される範囲の左下と一致すればいいのですが、実際は一致しません。

$pos=imagettfbbox($size, 0, $fontfile, $text);
とすると左下、右下、右上、左上の順でそれぞれの座標が返ります。
この座標はベースポイント($x,$y)との相対座標になります。

次の図は「あい」という文字列にベースポイントを示したものです。
ベースポイントを基準にすると文字列は右下にずれています。

$x = 20;
$y = 130;
imagettftext($img, $size, 0, $x, $y, $col_text, $fontfile, $text);
imagefilledellipse($img, $x, $y, 10, 10, $col_line);

これを合わせるにはimagettfbboxを使います。
次の図は、imagettfbboxで取得した相対位置を元に、文字列を正しい位置にずらしたものです。

$x = 20;
$y = 130;
$pos = imagettfbbox($size, 0, $fontfile, $text);
imagettftext($img, $size, 0, $x - $pos[0], $y - $pos[3], $col_text, $fontfile, $text);
imagefilledellipse($img, $x, $y, 10, 10, $col_line);

[ 2021年11月2日 | カテゴリー: PHP | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報