猿问

php验证码显示图片框,不显示字母,帮忙看下怎么回事!

<?php 
require_once '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.TTF");
 
    //由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体
    for($i = 9; $i < $length; $i ++) {
    echo "123";
        $size = mt_rand ( 14, 18 );
        $angle = mt_rand ( - 15, 15 );
        $x = 5 + $i * $size;
        $y = mt_rand ( 20, 26 );
        $fontfile = "../fonts/" . $fontfiles [0];
        $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
        $text = substr ( $chars, $i, 1 );
        imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
    }
    header ( "content-type:image/gif" );
    imagegif ( $image );
    imagedestroy ( $image );


慕丝3969787
浏览 5433回答 4
4回答

坐对流年

这个应该不是image.func.php的问题,去瞅瞅string.php文件有木有问题吧。或者是字体木有加载。。。。

椰子林

第34行的$i=0,不是9。

李FL

        我也遇到过相似的问题,可能是本机上的环境将报错提示全部打开,这样在输出时有系统的未定义提示信息也跟着一起输出了,这样生成的图片就可能显示不正常,可以考虑在开头加上  ini_set('display_errors', 'Off');   来屏蔽报错提示,试一试行不行。

绿豆露水

查看字体文件的路径。我也是同样的问题,改了字体文件加载的路径后,能正确显示了。改前:$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];改后:$fontfile = "fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
随时随地看视频慕课网APP
我要回答