zoukankan      html  css  js  c++  java
  • 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:phpStudyPHPTutorialWWW	hinkphp_3.2.3_fullApplicationHomeControllerSIDESHOW.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
    ");
            header("Cache-Control:no-cache
    ");
            header("Expires:0
    ");
            if(function_exists("imagejpeg")){
                header("content-type:image/jpeg
    ");
                imagejpeg($im);
            }else{
                header("content-type:image/png
    ");
                imagepng($im);
            }
            imagedestroy($im);
            exit();
        }

    生成的是这样的,原因在于字体的路径加载不道,红色部分改成自己服务器的路径

    更改了字体的路径以后  就可以正常显示了

  • 相关阅读:
    在浏览器中输入URL并回车后都发生了什么?
    HashMap数据结构
    记录一次mysql死锁
    常见排序(归并排序)
    记录一次redis事故
    jsp与javaBean
    org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.zhuoshi.entity.Dep#1]
    Oracle创建表空间报错:O/S-Error: (OS 3) 系统找不到指定的路径
    在myeclipse中maven项目关于ssh整合时通过pom.xml导入依赖是pom.xml头部会报错
    2018idea如何布置tomcat修改URL后连接不到
  • 原文地址:https://www.cnblogs.com/baker95935/p/11081278.html
Copyright © 2011-2022 走看看