2012-09-09 27 views
7

您能否解釋一下imagettfbbox()的返回值究竟意味着什麼? The manual saysPHP中的「imagettfbbox()」如何工作?

imagettfbbox()返回與代表四個點 使上成功的文本的邊界框和FALSE上 錯誤的8個元素的陣列。 [...這裏的點數表...] 無論角度如何,積分都是相對於文本的,因此「左上方的 」表示在左上角水平地看文本。

但是,我發現它不是很清楚。例如,返回值:

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

意味着以下幾點:

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

我應該如何解讀?

爲什麼有負值?

+0

你傳遞給函數的是什麼參數? – FilmJ

+0

只是將其視爲笛卡爾網格 –

回答

1

以下資源說明這一點: http://www.tuxradar.com/practicalphp/11/2/6

只需使用abs()。這是來自上面的資源:「[函數]從文本字符串的基線的左下角返回它的值,而不是絕對的左下角。字母的底線是它坐的位置,如果你是手寫它橫格紙」

+2

在對它們進行數學運算後,鏈接頁面錯誤地在各個座標值上使用「abs」而不是*。這樣做會導致錯位, – Charles

9

你應該看看comment by "marclaz" on the imagettfbbox manual page:作爲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)文本 起源是左下可讀文C orner。