php imagettftext 生成文字实现自动换行并设置行高
作者:xlnxin发布时间:2023-12-03分类:其他教程浏览:1316
导读:/** * 处理规定宽度内自动换行(imagettftext) &nb...
/**
* 处理规定宽度内自动换行(imagettftext)
* @param $card 画板
* @param $str string 字符串
* @param $width int 规定宽度
* @param $x int 文字生成的x位置
* @param $y int 文字生成的y位置
* @param $fontSize int 字体大小
* @param $font string 字体
* @param $color 字体颜色
* @param $rowHeight 行高
* @return bool
*/
function handleTextAlign($card, $str, $width, $x, $y, $fontSize, $font, $color, $rowHeight)
{
$content = "";
$row = 0;
$boxText = [];
for ($i = 0; $i < mb_strlen($str, 'utf8'); $i++) {
$letter = mb_substr($str, $i, 1, 'utf-8');//当前的字
$nextLetter = mb_substr($str, $i + 1, 1, 'utf-8');//当前的字
//第一 获取下一个拼接好的宽度 如果下一个拼接好的已经大于width了,就在当前的换行 如果不大于width 就继续拼接
$content .= $letter;
$nextStr = $content . $nextLetter;
$fontBox = imagettfbbox($fontSize, 0, $font, $nextStr);
if (($fontBox[2] > $width) && ($content !== "")) { //大于限制宽度 直接换行 这一行写入画布
$row = $row + 1;
$boxText[] = $content;
$content = "";
} else if ($i + 1 == mb_strlen($str, 'utf8')) {
$boxText[] = $content;
}
}
//多行减小字体大小
$fontSize = $fontSize - ($row * 2);
if ($row > 0){
//y方向的起始位置
$y = $y - ($row + 1) * $rowHeight;
}
foreach ($boxText as $item){
imagettftext($card, $fontSize, 0, $x, $y, $color, $font, $item);
$y += $fontSize + $rowHeight;
}
return true;
}标签:php
- 其他教程排行
-
- 1抖音极速版给大家发37元过年红包啦,快来领取吧!
- 2统信uos系统默认root密码是多少
- 3admin、0000、admin888、123456 md5加密后16位和32位代码
- 4国产安可立思辰打印机手动双面打印设置教程
- 5Windows10 DVDRW识别为CD驱动解决方法,windows无法读取驱动器E:\中的光盘解决方法
- 6navicat premium 15破解版64位32位 v15.0.3激活方法
- 7小程序Cannot read property 'enableUpdateWxAppCode'解决方法
- 8快手极速版给大家发56元新年红包啦,快来领取吧!
- 9查找对话框跑出屏幕外看不见了,怎么拖回来?
- 最近发表

