我有一行文本需要包装并在GD图像中居中.我也使用ttf字体.有什么可以给我些帮助吗?
我已经设法完成以下操作来包装一些文本,但是现在我需要将其居中:
function wrap($fontSize, $angle, $fontFace, $string, $width){
$ret = "";
$arr = explode(' ', $string);
foreach ( $arr as $word ){
$teststring = $ret.' '.$word;
$testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring);
if ( $testbox[2] > $width ){
$ret.=($ret==""?"":"\n").$word;
} else {
$ret.=($ret==""?"":' ').$word;
}
}
return $ret;
}
解决方法:
要在水平和垂直方向上居中:从整个文本的imagettfbbox中获得一半的高度(带有新行),然后从图像的一半高度中减去它的高度($start_x).
现在用新行分割文本,为每行创建ttfbox并获取其高度($h)和一半宽度($w).从图像宽度$w和$start_x的一半开始画线,将$h添加到$start_x,重新绘制直到写完所有线.