php扭曲的验证码代码

  • 内容
  • 相关
//创建验证码


function randstr($length=4){
 
if($length<=0){
  return "";
 }
 $source="abcdefghijkmnpqrstuvwsyzABCDEFGHIJKMNPQRSTUVWSYZ23456789";
 //随机找四个
 //
 $str="";
 for($i=0;$i<$length;$i++){
 $str .=substr($source,rand(0,55),1);
 
   }
   return $str;
}
 //echo randstr(4);
 
 //创建画布
 $im=imagecreatetruecolor(110,50);
 $code=imagecreatetruecolor(110,50);
 
 //创建颜色
 $bg=imagecolorallocate($im,52,255,255);
 $color1=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
 $color2=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
 $color3=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
 $color4=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
 
 //加蓝色背景
 imagefill($im,0,0,$bg);
 imagefill($code,0,0,$bg);
 //加干扰线
 for($i=0;$i<4;$i++){
 imageline($im,0,rand(0,50),110,rand(0,50),$color1);
 }
 
 //画点
 for($i=0;$i<200;$i++){
 imagesetpixel($im,rand()% 110,rand()% 50,$color2);
 }
  
 //写字符
 imagettftext($im,20,0,16,34,$color4,'./msyh.ttf',randstr(4)); 
 //msyh.ttf是微软黑雅字体,可以在网上下载一个,也可以换成其他字体,自己可以任意选择
 //扭曲
 $fz=3;//上下波动最大3像素
 $t=10;//扭动周期,10个像素扭动一个周期
 
 for($j=0;$j<110;$j++){
 
  $y=round(sin(deg2rad(18 * ($j % 20 ))) * $fz);
  imagecopy($code,$im,$j,$y,$j,0,1,50);
 }
 
 //输出图片
 header('content-type: image/jpeg');
 imagejpeg($code);
 
 保存设置编码格式utf8无BOM格式,ANSI也可以,如果是utf8的,会出现破图,去掉header,则是乱码,改了编码格式就好了

本文标签:

版权声明:若无特殊注明,本文皆为《筱彬》原创,转载请保留文章出处。

本文链接:php扭曲的验证码代码 - http://www.itfml.com/php/49.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注