2012-09-09 16 views
7

戻り値imagettfbbox()の正確な値を教えてください。 The manual saysPHPの "imagettfbbox()"はどのように機能しますか?

imagettfbboxは() エラーの成功とFALSEにテキストのバウンディングボックスをする4つの 点を表す8つの要素を持つ配列を返します。 [...ここのポイントのテーブル...] ポイントは角度に関係なくテキストを基準にしているので、 "upper left"は、テキストを水平に見て左上隅にあることを意味します。

しかし、わかりません。例えば、戻り値:私はそれらをどのように解釈すべきか

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

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

は、以下の点を意味しますか?

なぜ負の値がありますか?

+0

この関数に渡されたパラメータは何ですか? – FilmJ

+0

デカルトの格子として見る –

答えて

1

次のリソースは、この説明: http://www.tuxradar.com/practicalphp/11/2/6

ちょうどabs()を使用しています。これは上のリソースからのものです: "[関数]は、左下の絶対座標ではなく、テキスト文字列のベースラインの左下隅から値を返します。文字のベースラインは、手

+2

リンクされたページは、* after *の代わりに個々の座標値に誤って 'abs'を使用しています。そうすることは、ミスアライメントをもたらすことになり、 – Charles

9

あなたはcomment by "marclaz" on the imagettfbbox manual page見とるべき並ん紙」でそれを書く:imageTTFBboxとimageTTFText関数は負の数のケアをすることができ、座標の 配列を返すよう

ことに注意してくださいすることは が取られなければなりません高さと幅の計算。

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

その後を($ x、$ y)の位置にテキストを中央揃えにする:水平テキストの

それを行うにはrigth方法は、ABS()関数を使用することです(0,0)ページの原点がTOPLEFTページの隅で、(0,0)、テキスト 原点は左下読み取り可能なテキストcであるので、

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

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

この:コードがあること ようにする必要がありますorner。

関連する問題