为了账号安全,请及时绑定邮箱和手机立即绑定

验证码一片漆黑???/

<?php
/**
 * 生成验证码
 * @param integer $type 类型0:纯数字 类型1:字母 类型2:数字+字母
 * @param integer $length 验证码长度
 * @param integer $width 画布宽度
 * @param integer $height 画布高度
 * @return string 验证码字符串
 */
function generateVerify($type=2, $length=4, $width=100, $height=30) {
    // 新建一个真彩色图像
    $image = imagecreatetruecolor($width, $height);
    // 为一副图像分配颜色
    $white = imagecolorallocate($image, 255, 255, 255);
    // 画一矩形并填充
    imagefilledrectangle($image, 0, 0, $width, $height, $white);

    function randColor($image) {
        return imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
    }

    switch($type) {
        // 产生随机数字
        case 0:
            $str = join('', array_rand(range(0,9), $length));
            break;
        // 产生随机字母
        case 1:
            $str = join('', array_rand(array_flip(array_merge(range('a', 'z'), range('A', 'Z'))), $length));
            break;
        // 产生随机数字字母
        case 2:
            $str = join('', array_rand(array_flip(array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'))), $length));
            break;
    }

    //  用 TrueType 字体向图像写入文本
    for($i=0;$i<$length;$i++) {
        imagettftext($image, 16, mt_rand(-30, 30), $i*($width/$length), mt_rand($height-15, 25), randColor($image), '.\font\Microsoft-YaHei-Light.ttc', $str[$i]);
    }

    // 生成像素点
    for ($i=1;$i<=100;$i++) {
        imagesetpixel($image, mt_rand(0, $width), mt_rand(0, $height), randColor($image));
    }

    //输出图像
    header('Content-type:image/png');
    imagepng($image);
    imagedestroy($image);

    return $str;
}
generateVerify();


正在回答

1 回答

测试了半天,导入字体库的时候使用绝对路径就好了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

验证码一片漆黑???/

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信