2013-07-27 71 views
2

其工作完美時,直到我嘗試使用字體的文本產生的問題。驗證碼圖像使用字體PHP

這是我的代碼.. 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); 

哦,是在前面的線是這裏的字體路徑:我覺得你缺少一個參數在imagettftext

// random number 

$ranStr = md5(microtime()); 

$ranStr = substr($ranStr, 0, 6); 

// Set Path to Font File 
    $font_path = 'captcha.TTF'; 
+0

你有什麼錯誤?並且是正確的字體路徑,您是否嘗試過字體的絕對路徑? –

+0

當我使用imagestring()它的工作原理我看到圖像..當我使用imagettftext()我沒有得到任何東西..甚至沒有使用從putvande的recomendatios –

+0

你有錯誤信息?我們需要知道什麼是「沒得到任何東西」的意思,就像你得到一個空白圖像,腳本過早結束等 –

回答

1

看起來您在撥打imagettftext時有錯誤的參數。

推測,5對應於imagestring中使用的字體,但在imagettftext中沒有位置。您還需要指定大小和角度。

例如:

imagettftext($newImage, 12, 45, 10, 27, $txtColor, $font_path, $ranStr); 
         ^^ ^^ 
         || || 
         || ------ angle 
         ----------- size 

在這個例子中:

大小= 12像素或12磅,這取決於是否使用GD1或GD2

角度= 45 °

很明顯,你會希望使用自己的值H. ERE。

如果仍然無法正常工作,那麼字體文件的路徑可能是錯誤的。檢查它是否與PHP腳本位於同一文件夾中。

+0

我現在通過它的路線到文件...但字體在那裏警告:imagettftext()[function.imagettftext]:找不到/ xxxxx/public_html/library/captcha中的字體32行.php .. –

+0

它的工作現在,但字體發送一個消息insted我的代碼..我認爲它不是一個「合法的」字體使用=(...我把它從dafont.com你知道嗎這是一個很好的字體網站..我可以使用谷歌字體嗎?我會鏈接到字體XD –

+0

Google字體應該沒問題,但是你必須下載TTF文件。請參閱[使用php gd和google webfonts添加文本到圖像](http://stackoverflow.com/a/6132827/911182) – Herbert

1

。 如果你看看http://php.net/manual/en/function.imagettftext.php它有size,angle,xy
你缺少4(即時猜測的angle)之一。

所以它需要是這樣的:

imagettftext($newImage, 5, 0, 10, 27, $txtColor, $font_path, $ranStr); 

其中0是angle

+0

不幸的是它不工作,當我使用圖像字符串()它的作品,我看到圖像..當我使用imagettftext()我沒有得到任何東西..甚至不使用你的推薦 –

+1

你有任何錯誤? (打開你的錯誤也許) – putvande

+0

我thik現在它的路線的文件...但字體在那裏警告:imagettftext()[function.imagettftext]:無法找到/打開字體在/ xxxxx/public_html /庫/ captcha.php在線32 –