13

meanの戻り値が正確に何を意味するのか説明していただけますimagettfbbox()か? マニュアルには次のように書かれています

imagettfbbox() は、成功した場合はテキストのバウンディング ボックスを作成し、エラーの場合は FALSE を作成する 4 つのポイントを表す 8 つの要素を含む配列を返します。[...ここにポイントの表...] ポイントは、角度に関係なくテキストに対して相対的であるため、「左上」とは、テキストを水平方向に見て左上隅にあることを意味します。

しかし、私はそれがあまり明確ではないことがわかりました。たとえば、戻り値は次のとおりです。

array(-1, 1, 61, 1, 61, -96, -1, -96)

以下の点を意味します。

(-1, -96) ------ (61, -96)
    |                |
    |                |
    |                |
    |                |
    |                |
    |                |
 (-1, 1) -------- (61, 1)              

それらをどのように解釈すればよいですか?

なぜ負の値があるのですか?

4

3 に答える 3

13

マニュアルページの「marclaz」によるコメントをimagettfbboxご覧ください。

imageTTFBbox および imageTTFText 関数は座標の配列を返すため、負の数になる可能性があるため、高さと幅の計算には注意が必要です。

これを行う正しい方法は、abs() 関数を使用することです。

横書きの場合:

$box = @imageTTFBbox($size,0,$font,$text); $width = abs($box[4] -
$box[0]); $height = abs($box[5] - $box[1]);

次に、テキストを ($x,$y) 位置の中央に配置するには、コードは次のようになります。

$x -= $width/2; $y += $heigth/2;

imageTTFText($img,$size,0,$x,$y,$color,$font,$text);

これは、(0,0) ページの原点がページの左上隅であり、(0,0) テキストの原点が左下の読み取り可能なテキストの隅であるためです。

于 2012-09-09T10:18:27.020 に答える
2

次のリソースでこれについて説明しています: http://www.tuxradar.com/practicalphp/11/2/6 (archive.org 経由)

abs()を使用するだけです。これは上記のリソースからのものです。「[関数] は、絶対的な左下隅ではなく、テキスト文字列のベースラインの左下隅から値を返します。文字のベースラインは、あなたが罫線入りの紙に手書きで」

于 2012-09-09T10:17:32.160 に答える