imagettftext ( ) 錯誤 找不到
<?php
require_once 'string.func.php';//只包含一次(把string.func.php內容包含進來)
//通過GD庫做驗證碼
//創建畫布
$width = 80;
$height = 28;
$image = imagecreatetruecolor ( $width, $height );
$white = imagecolorallocate ( $image, 255, 255, 255 );//白色用來填充畫布
$black = imagecolorallocate ( $image, 0, 0, 0 );//畫筆顏色
//用矩形填充畫布
imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );//用白色填充
$type=1;
$length=4;
$chars = buildRandomString ( $type, $length );//調用(選擇類型長度)
$sess_name = "verify";
$_SESSION [$sess_name] = $chars;
$fontfiles = array ("SIMYOU.TTY" );
for($i = 0; $i < $length; $i ++) {
? $size = mt_rand ( 14, 18 );//字體大小
? $angle = mt_rand ( - 15, 15 );//傾斜角度
? $x = 5 + $i * $size;// 橫坐標(寬)
? $y = mt_rand ( 20, 26 );//縱坐標(高)
? $fontfile = "../fonts/". $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
? //字體文件隨機選出一個【0】到【數組長度減一】
? $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ),
? mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );//隨機顏色
? $text = substr ( $chars, $i, 1 );//從i開始取(第一次是零第二次是一),每次取一位
? imagettftext ($image, $size, $angle, $x, $y, $color, $fontfile, $text );
}
header ( "content-type:image/gif" );//告訴瀏覽器要顯示的資源
imagegif ( $image );//顯示畫布
imagedestroy ( $image );//銷毀畫布資源
2019-03-16
搞定啦
$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];(錯誤)
$fontfile = dirname(__FILE__) ."/../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];(正確)
原因:根據 PHP 所使用的 GD 庫的不同,當 fontfile 沒有以 / 開頭時則 .ttf 將被加到文件名之后并且會在庫定義字體路徑中嘗試搜索該文件名。