使用字体PHP时Captcha图像生成问题

时间:2013-07-27 16:28:00

标签: php imagettftext

它的工作完美,直到我尝试将字体用于文本。

这是我的代码..现在评论的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';

2 个答案:

答案 0 :(得分:1)

我认为您遗失了imagettftext中的参数。 如果您查看http://php.net/manual/en/function.imagettftext.php,则sizeanglexy。 你错过了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脚本位于同一文件夹中。