我正在尝试用 GD 签署图像。
我有一行文字,可能看起来像这样:“这是一行很长的文字”
如果我使用第 60 种字体,它不适合我的图像,所以我需要一些如何做 wordwrap
现在我正在使用循环,它正在执行受符号数量限制的自动换行并逐行向图像添加文本..
$words = explode(" ", $text);
if (strlen($words[0]) > 20)
$output = substr($words[0], 0, 20);
else {
$output = array_shift($words);
while (strlen($output . " " . $words[0]) <= 20) {
$output .= " " . array_shift($words);
}
}
$text = $str2 = substr($text, strlen($output));
list($left,, $right) = imageftbbox($font_sizet, 0, $font_path, $output);
$width = $right - $left;
$leftx = (740 - $width) / 2;
$topy = (560 + $i * 30);
imagettftext($img, $font_sizet, 0, $leftx, $topy, $white, $font_path, $output);
这个脚本的问题是,如果第一个字母是“WWWWWWWWWWWW”,则图像只能容纳 10 个符号……如果第一个字母是“llllllllllll”,则文本看起来会很短。
我无法使用此行确定的文本宽度:
list($left,, $right) = imageftbbox( $font_sizet, 0, $font_path, $output);
$width = $right - $left;
<- 我认为我可以在我的循环中使用这个 $width 来与 maxlength 进行比较
如何将符号数量限制更改为像素数量限制(比如说,我希望线条不超过 300 像素)?