php使用imagettftext()函數有干擾線但是沒有文字的問題解決


 public function code()
    {

        //主要參數
        if($font_size == 0) $font_size = 20;
        if($img_width == 0) $img_width = 110;
        if($img_height == 0) $img_height = 50;
        if($word_type == 0) $word_type = 3;   // 1:數字 2:英文 3:混合
        $font_file  = 'E:\phpStudy\PHPTutorial\WWW\thinkphp_3.2.3_full\Application\Home\Controller\SIDESHOW.TTF';//字體的路徑
        
        //創建圖片,並設置背景色
        $im = @imagecreate($img_width, $img_height);
        imagecolorallocate($im, 192,192,192);
        
        //獲取隨機字符
        if($word_type == 1) {
            $verifyCode = implode('', range(2, 9));
        }elseif ($word_type == 2) {
            $verifyCode = implode('', range('A', 'Z'));
        }else{
            $verifyCode = implode('', array_merge(range(2, 9),range('A', 'Z')));
            $verifyCode = str_replace(array('I','O'), array('P','N'), $verifyCode);
        }
        //打亂字符串
        $verifyCode = str_shuffle($verifyCode);
        $rndstring = substr($verifyCode,0,4);
        //echo $rndstring;exit;
        
        $rndcodelen = strlen($rndstring);
        
        //干擾線
        for($i = 0; $i < 5; $i++) {
            $color = imagecolorallocate($im, 0, 0, 0);
            imageline($im, rand(0, $img_width), rand(0, $img_height), rand(0, $img_width), rand(0, $img_height), $color);
        }
        
        //畫邊框
        //$bordercolor = imagecolorallocate($im, 0, 0, 0);
        //imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $bordercolor);
        
        //輸出文字
        for($i = 0;$i < $rndcodelen;$i++){
            $rndstring[$i] = strtoupper($rndstring[$i]);
            $c_fontColor = imagecolorallocate($im, 0, 0, 0);
            $y_pos = $i == 0 ? 10 : $i * ($font_size + 8);
            $c = mt_rand(0, 15);
            imagettftext($im, $font_size, $c, $y_pos, 35, $c_fontColor, $font_file, $rndstring[$i]);
        }
        header("Pragma:no-cache\r\n");
        header("Cache-Control:no-cache\r\n");
        header("Expires:0\r\n");
        if(function_exists("imagejpeg")){
            header("content-type:image/jpeg\r\n");
            imagejpeg($im);
        }else{
            header("content-type:image/png\r\n");
            imagepng($im);
        }
        imagedestroy($im);
        exit();
    }

生成的是這樣的,原因在於字體的路徑加載不道,紅色部分改成自己服務器的路徑

更改了字體的路徑以后  就可以正常顯示了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM