2011-11-18 65 views
0

我想添加一個白色的框,圍繞通過GD-Lib添加到圖片的一些文本。 但我不知道如何做到最好。圍繞文本創建白框GD-Lib

這裏是我當前的代碼:

<?php 
    $textImg = imagecreatefromjpeg($tempImage); 
    $black = imagecolorallocate($textImg, 0, 0, 0); 

    $font = 'lib/verdana.ttf'; 

    // Add the text 
    imagettftext($textImg, 20, 0, imagesx($textImg)*$textData['x']/100, imagesy($textImg)*$textData['y']/100, $black, $font, $textData['text']); 

    imagejpeg($textImg,$tempImage,$jpegQuality); 
    ?> 

我希望你能幫助我。

回答

1

您可以使用imagettfbbox()通過傳遞用於文本本身的相同設置(相同的文本,字體和大小等)來獲取邊界框的座標。

一旦你有了這些座標,你就可以使用imagerectangle()在文本週圍繪製邊框,或者你可以使用imagefilledrectangle()繪製一個實心的矩形。一定要叫什麼你渲染imagettftext()

一個基本的例子是下面的文字前,但需要一些調整的大部分是來自內存和I懷疑$x$y計算可以做的更好,因爲它可能沒有按」 t可以像現在一樣使用不同的畫布尺寸。但是,它表明了原則。

// Set the content-type 
header('Content-Type: image/png'); 

// Create the image 
$im = imagecreatetruecolor(400, 30); 

// Create some colors 
$white = imagecolorallocate($im, 255, 255, 255); 
$black = imagecolorallocate($im, 0, 0, 0); 
imagefilledrectangle($im, 0, 0, 399, 29, $black); 

// The text to draw 
$text = 'Testing'; 
// Replace path by your own font path 
$font = 'verdana.ttf'; 

// Add the text 

$bbox = imagettfbbox(20, 0, $font, $text); 

$x = $bbox[1] + (imagesx($im)/2) - ($bbox[4]); 
$y = $bbox[3] + (imagesy($im)/2) - ($bbox[5]); 

imagerectangle($im, 0, 0, $x, $y, $white); 
imagettftext($im, 20, 0, 0, 20, $white, $font, $text); 

// Using imagepng() results in clearer text compared with imagejpeg() 
imagejpeg($im); 
imagedestroy($im);