我想寫一個腳本,從文本,大小和它獲得的$ _GET參數中的字體生成一個PNG圖像,但我不知道如何使圖像的大小完全符合文本。我已經在使用imagettfbox:PHP GD imagettftext測量
$widthPx = abs($ttfBox[2] - $ttfBox[0]);
$heightPx = abs($ttfBox[1] - $ttfBox[7]);
這可能會給我正確的測量結果,但是當我繪製文本時,它會出現一些超出範圍的情況。例如,如果我嘗試使用arial.ttf繪製一個「a」,它至少有5個像素越界。有沒有一種方法可以在沒有測試的情況下繪製完全適合圖像的任何字體的文本?
$text = $_GET["text"];
$cmToPixel = 15.0;
$sizeCm = floatval($_GET["sizeCm"]);
$sizePx = $cmToPixel * $sizeCm;
$fontFile = "fonts/".pathinfo($_GET["font"])["filename"].".".pathinfo($_GET["font"])["extension"];
if(!file_exists($fontFile)){
die;
}
$ttfBox = imagettfbbox($sizePx, 0, $fontFile, $text);
$widthPx = abs($ttfBox[2] - $ttfBox[0]);
$heightPx = abs($ttfBox[1] - $ttfBox[7]);
$image = ImageCreate($widthPx, $heightPx);
$x = $ttfBox[0] + (imagesx($image)-$ttfBox[4])/ 2 - 0;
$y = $ttfBox[1] + (imagesy($image)/2) - ($ttfBox[5]/2) - 5;
ImageRectangle($image,0,0,imagesx($image),imagesy($image), ImageColorAllocate($image,255,255,255));
imagettftext($image, $sizePx,0,$x,$y, ImageColorAllocate($image, 0, 0, 0), $fontFile, $text);
header("Content-Type: image/png");
ImagePng($image);
ImageDestroy($image);
您是否查看了本手冊提供的示例?他們可能會幫助:[imagettfbbox - 使用TrueType字體給文本的邊界框](http://php.net/manual/en/function.imagettfbbox.php) – 2015-02-08 02:53:14
我已經看過所有的例子,它似乎我必須通過測試像素顏色來修剪圖像,因爲文本輸出太不準確了。當我繪製它時,每個文本都有不同的偏移量,所以它總是超出範圍。 – user1563232 2015-02-08 08:54:07
是否可以發佈您使用的代碼,以便我們可以試用它? – 2015-02-08 09:00:51