一、介紹
在PHP中,經常需要對文本進行操作,比如生成圖片時需要在圖片中插入文本,這時就需要用到imagettfbbox函數。imagettfbbox函數是用來計算指定字體的字元串的像素寬度、高度和基線(Baseline)偏移量,以及每一個字元所在的四個頂點坐標等等信息。
二、參數
語法:
array imagettfbbox ( float $size , float $angle , string $fontfile , string $text [, array $extrainfo ] )
以上參數依次表示:
1、$size:字體大小,單位為像素。
2、$angle:旋轉角度,單位為度數。
3、$fontfile:字體文件的路徑。
4、$text:要計算信息的文本。
5、$extrainfo:額外信息,在不少本地GD庫中此參數是被忽略的,不過它在 Windows 調用的 GD 庫中是必須的。
三、返回值
運行成功則返回一個數組:
Array ( [0] => 左下角的X軸坐標 [1] => 左下角的Y軸坐標 [2] => 右下角的X軸坐標 [3] => 右下角的Y軸坐標 [4] => 右上角的X軸坐標 [5] => 右上角的Y軸坐標 [6] => 左上角的X軸坐標 [7] => 左上角的Y軸坐標 )
其中,返回坐標順序從左下角到右下角依次為0至3,從右下角到右上角依次為4至5,從右上角到左上角依次為6至7。
四、使用實例
下面是一個使用imagettfbbox函數繪製文本的例子,首先定義了一個獲取隨機顏色的函數:
/** * 獲取隨機顏色 * @param int $min 最小值 * @param int $max 最大值 * @return array 顏色值數組,包含r,g,b三個值 */ function randomColor($min = 0, $max = 255) { $r = mt_rand($min, $max); $g = mt_rand($min, $max); $b = mt_rand($min, $max); return array($r, $g, $b); }
然後,定義一段文字並計算它所佔用的空間:
$text = "Hello, world!"; $font = "arial.ttf"; $size = 24; $angle = 0; $bbox = imagettfbbox($size, $angle, $font, $text); $width = abs($bbox[2] - $bbox[0]); $height = abs($bbox[7] - $bbox[1]);
計算出寬度和高度之後,可以把文字畫到一個基礎圖像上:
$image = imagecreate($width, $height); $bg = imagecolorallocate($image, 255, 255, 255); $textColor = imagecolorallocate($image, 0, 0, 0); imagettftext($image, $size, $angle, 0, $height - $bbox[7], $textColor, $font, $text);
完整的代碼如下:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/301534.html