一、介绍
在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/n/301534.html