PHP绘制文字到图像时,有时需要文字居中,这时候就要用到imagettfbbox函数.
示例:

//1.配置图片路径
$src = '图片本地路径';
//2.获取图片信息
$info = getimagesize($src);
//3.通过编号获取图像类型
$type = image_type_to_extension($info[2], false);
//4.在内存中创建和图像类型一样的图像
$fun = "imagecreatefrom" . $type;
//5.图片复制到内存
$image = $fun($src);
$font = "字体.ttf";
$content='我是文字内容';
$fontSize = 40;//像素字体大小
//设置字体颜色和透明度
$color = imagecolorallocatealpha($image, 0,0,0,0);
//计算文字边距坐标位置
$fontBox = imagettfbbox($fontSize, 0, $font, $content);
//文字水平居中处理 $info[0]是图像总宽度,通过getimagesize($src)函数获取图像宽度.
imagettftext($image, $fontSize, 0,ceil(($info[0]- $fontBox[2]) / 2), $merchnameHpx, $color, $font, $content);
$fun = "image" . $type;
//保存图片到本地
$resultImg_2 = uniqid() . 'bg_res.' . $type;
$fun($image, '../本地保存路径/' . $resultImg_2);
/*销毁图片*/
imagedestroy($image);

imagettfbbox — 取得使用 TrueType 字体的文本的范围

参数说明 ¶
imagettfbbox ( float $size , float $angle , string $fontfile , string $text ) : array
本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。

size
像素单位的字体大小。
angle
text 将被度量的角度大小。
fontfile
TrueType 字体文件的文件名(可以是 URL)。根据 PHP 所使用的 GD 库版本,可能尝试搜索那些不是以 ‘/‘ 开头的文件名并加上 ‘.ttf’ 的后缀并搜索库定义的字体路径。
text
要度量的字符串。


返回值
imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角:
0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置