3

我正在尝试用 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 像素)?

4

0 回答 0