首页  >  文章  >  后端开发  >  如何用php生成扭曲及旋转的验证码图片_php技巧

如何用php生成扭曲及旋转的验证码图片_php技巧

WBOY
WBOY原创
2016-05-17 09:02:38849浏览
复制代码 代码如下:

function make_rand($length="32"){//验证码文字生成函数
        $str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    $result="";
    for($i=0;$i        $num[$i]=rand(0,61);
        $result.=$str[$num[$i]];
    }
    返回$结果;
}
$checkcode = make_rand(5);
$im_x=160;
$im_y=32;
function make_crand($length="5") {
    $string = '';
    for($i=0;$i        $string .= chr(rand(0xB0,0xF7)).chr(rand(0xA1,0xFE));
    }
    return $string;
}
函数 getAuthImage($text , $im_x = 230 , $im_y = 32) {
    $im = imagecreatetruecolor($im_x,$im_y);
    $text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
    $tmpC0=mt_rand(100,255);
    $tmpC1=mt_rand(100,255);
    $tmpC2=mt_rand(100,255);
    $buttum_c = ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);
    imagefill($im, 16, 13, $buttum_c);
    //echo $text;
    $font = 'c://WINDOWS //Fonts //simsun.ttc';
    //echo strlen($text);
    $text=iconv("gb2312","UTF-8",$text);
    //echo mb_strlen($text,"UTF-8");
    for ($i=0;$i    {
            $tmp =mb_substr($text,$i,1,"UTF-8");
            $array = array(-1,0,1);
            $p = array_rand($array);
            $an = $array[$p]*mt_rand(1,9);// 角度
            $size = 20;
            imagettftext($im,$size,$an,10 $i*$size*2,25,$text_c,$font,$tmp);
    }
     $ Distortion_im = imagecreatetruecolor ($im_x, $im_y);
     imagefill($ Distortion_im, 16, 13, $buttum_c);
     for ( $i=0; $i         for ( $j=0; $j             $rgb = imagecolorat($im , $i , $j);
             if( (int)($i 20 sin($j/$im_y*2*M_PI)*10) =0 ) {
                 imagesetpixel ($ Distortion_im, (int)($i 10 sin($j/$im_y*2*M_PI-M_PI*0.5)*3) , $ j , $rgb);
             }
         }
     }
     //加入干预象素;
    $count = 600;//干扰像素的数量
    for($i=0; $i            $randcolor = ImageColorallocate($ Distortion_im,mt_rand(0,255), mt_rand(0,255),mt_rand(0,255));
            imagesetpixel($ Distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor);
    }
    $line_c=5;
     //图像行
     for($i=0; $i          $linecolor = imagecolorallocate($ Distortion_im, 17, 158, 20);
         $lefty = mt_rand(1, $im_x-1);
         $righty = mt_rand(1, $im_y-1);
         imageline($ Distortion_im, 0, $lefty, imagesx($ Distortion_im), $righty, $linecolor);
     }
     Header("内容类型:图像/PNG");
    // 以PNG格式将图像输出到浏览器或文件;
    //ImagePNG($im);
    ImagePNG($ Distortion_im);
    //思考一个图像,释放与图像关联的内存;
    ImageDestroy($ Distortion_im);
    ImageDestroy($im);
}
?>

用法示例如下:
复制代码 代码如下:

getAuthImage(make_crand(5));
?>

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn