//处理文字 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所指的相对路径转换成绝对路径。
特记录下来...