2012-09-09 10 views
7

Bạn có thể giải thích chính xác giá trị trả lại của imagettfbbox() có nghĩa là gì? The manual says:Làm thế nào để "imagettfbbox()" trong PHP hoạt động?

imagettfbbox() trả về một mảng với 8 yếu tố đại diện cho bốn điểm làm cho khung giới hạn của văn bản trên thành công và FALSE trên lỗi. [... Bảng điểm ở đây ...] Các điểm liên quan đến văn bản bất kể góc, vì vậy "phía trên còn lại" có nghĩa là ở góc trên cùng bên trái, nhìn thấy văn bản theo chiều ngang.

Nhưng, tôi thấy nó không rõ ràng. Ví dụ, giá trị trả về:

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

nghĩa những điểm sau đây:

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

Làm thế nào tôi nên giải thích cho họ?

Tại sao có giá trị âm?

+0

thông số nào bạn đã chuyển đến hàm? – FilmJ

+0

chỉ xem nó như là một lưới Descartes –

Trả lời

1

Tài nguyên sau giải thích điều này: http://www.tuxradar.com/practicalphp/11/2/6

Chỉ cần sử dụng abs(). Đây là từ tài nguyên ở trên: "[hàm] trả về giá trị của nó từ góc dưới bên trái của đường cơ sở của chuỗi văn bản, không phải góc dưới bên trái tuyệt đối. Đường cơ sở của một chữ cái là vị trí sẽ nằm nếu bạn tay viết nó trên giấy lót"

+2

Trang được liên kết không đúng cách sử dụng 'abs' trên các giá trị tọa độ riêng lẻ thay vì * sau * làm toán trên chúng. Làm như vậy sẽ dẫn đến sai lệch, – Charles

9

Bạn nên có một cái nhìn tại comment by "marclaz" on the imagettfbbox manual page:

Xin lưu ý rằng như imageTTFBbox và chức năng imageTTFText trả về một mảng tọa độ mà có thể chăm sóc số âm phải được chụp với các tính toán chiều cao và chiều rộng.

Cách rigth để làm điều đó là sử dụng abs() chức năng:

cho một văn bản theo chiều ngang:

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

Sau đó, để tập trung văn bản của bạn tại ($ x, $ y) vị trí mã nên được như rằng:

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

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

này vì (0,0) có nguồn gốc trang là topleft góc trang và (0,0) văn bản gốc thấp bên trái văn bản có thể đọc được c orner.