它的工作完美,直到我尝试将字体用于文本。
这是我的代码..现在评论的3er行是一个工作正常的...但在这个例子中我试图用imagettftext替换这一行..不幸运。
我的错误是什么?
$newImage = imagecreatefromjpeg( "orsil_secure.jpg" );
$txtColor = imagecolorallocate($newImage, 0, 0, 0);
//imagestring($newImage, 5, 10, 27, $ranStr, $txtColor);
imagettftext($newImage, 5, 10, 27, $txtColor, $font_path, $ranStr);
header( "Content-type: image/jpeg" );
imagejpeg($newImage);
哦,在前面的行中是这里的字体路径:
// random number
$ranStr = md5(microtime());
$ranStr = substr($ranStr, 0, 6);
// Set Path to Font File
$font_path = 'captcha.TTF';
答案 0 :(得分:1)
我认为您遗失了imagettftext
中的参数。
如果您查看http://php.net/manual/en/function.imagettftext.php,则size
,angle
,x
和y
。
你错过了4个中的一个(我猜测angle
)。
所以它需要像:
imagettftext($newImage, 5, 0, 10, 27, $txtColor, $font_path, $ranStr);
其中0表示angle
。
答案 1 :(得分:1)
您对imagettftext的调用似乎有错误的参数。
据推测,5对应于imagestring
中使用的字体,但在imagettftext
中没有位置。您还需要指定大小和角度。
例如:
imagettftext($newImage, 12, 45, 10, 27, $txtColor, $font_path, $ranStr);
^^ ^^
|| ||
|| ------ angle
----------- size
在这个例子中:
size = 12px或12pt,具体取决于您使用的是GD1还是GD2
角度= 45°
显然,你会想在这里使用你自己的值。
如果它仍然无效,则可能是您的字体文件的路径错误。检查它是否与PHP脚本位于同一文件夹中。