//处理文字
if (!empty($config['text'])) {
// 验证码使用随机字体
// $ttfPath = './public/static/plugins/posters/zhttfs/1.ttf'; //这样子写在linux环境下是没有问题的,php官方也是这样子给的样例,但用在win下是无法打上文字的
$ttfPath = realpath(".").'/public/static/plugins/posters/zhttfs/1.ttf';//这样子就可以在win上打上文字,路径识别问题
foreach ($config['text'] as $key => $val) {
$val = array_merge($textDefault, $val);
$val['left'] = ($val['left'] * $backgroundWidth) . 'px';
$val['top'] = ($val['top'] * $backgroundHeight) . 'px';
$val['width'] = ($val['width'] * $backgroundWidth) . 'px';
$val['height'] = ($val['height'] * $backgroundHeight) . 'px';
//判断字体颜色是十六进制还是RGB
if (strstr($val['fontColor'], ',')) {
list($R, $G, $B) = explode(',', $val['fontColor']);
} else {
$val['fontColor'] = str_replace('#', '', $val['fontColor']);
if (strlen($val['fontColor']) > 3) {
$R = hexdec(substr($val['fontColor'], 0, 2));
$G = hexdec(substr($val['fontColor'], 2, 2));
$B = hexdec(substr($val['fontColor'], 4, 2));
} else {
$R = substr($color, 0, 1) . substr($color, 0, 1);
$G = substr($color, 1, 1) . substr($color, 1, 1);
$B = substr($color, 2, 1) . substr($color, 2, 1);
}
}
$fontColor = imagecolorallocate($imageRes, $R, $G, $B);
$val['left'] = $val['left'] < 0 ? $backgroundWidth - abs($val['left']) : $val['left'];
$val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) : $val['top'];
imagettftext($imageRes, $val['fontSize'], $val['angle'], $val['left'], $val['top'], $fontColor, $ttfPath, $val['text']);
}
}因有的用户用的是win服务器,安装海报的时候设置的文字内容无法生成上,但在linux是正常的,所以测试后发现是路径问题。
因为官方及很多的案例都是$font ='./times.ttf'; 这样子写的。导致win无法识别。
需要realpath()用来将参数path所指的相对路径转换成绝对路径。
特记录下来...

