实际开发中涉及到的推广海报调用的文字需多行展示,修改text()方法来实现。
改动并不大,开始位置:
$text = explode('|', $text); //把字符串文字转为数组,没有分隔符的文字可以通过函数按照制定长度来分割
$maxtext = 0;
foreach ($text as $val) {
$maxtext = strlen($val) > strlen($maxtext) ? $val : $maxtext;
}
if (!is_file($font)) {
$this->error='not_exist_font';
$this->error['not_exist_font']=":{$font}";
}
//获取文字信息
$info = imagettfbbox($size, $angle, $font, $maxtext);
$textHeight = $info[1] - $info[7];
$lineHeight = $textHeight + 3;
底部写入文字代码,加一个循环即可foreach ($text as $key => $val) {
imagettftext($this->im, $size, $angle, $x + $ox, $y + $oy + $key * $lineHeight, $col, $font, $val);
}
我们把传入的字符串转为数组后,循环添加文字水印时,只是增加$lineHeight高度而已。就这样实现了多行文本水印。
最佳答案
