Feb 4

生成验证图片 晴

碟舞飞扬 , 03:02 , Web开发 , 评论(0) , 引用(0) , 阅读(3266) , Via 本站原创 | |
makeImg.php:
<?php
/***********************
* 文件名:makeImg.php
* 作者:乐言(QQ:7928478)
* 主页:www.leyan.net
* 时间:2006-1-7
* 功能:生成验证图片
************************/
/*
作用:取得随机字符串
参数:
    1、(int)$length = 32 #随机字符长度,默认为32
    2、(int)$mode = 0 #随机字符类型,0为大小写英文和数字,1为数字,2为小写子木,3为大写字母,4为大小写字母,5为大写字母和数字,6为小写字母和数字
返回:取得的字符串
*/
function getCode ($length = 32, $mode = 0)
{
switch ($mode) {
  case "1":
   $str = "1234567890";
  break;
  case "2":
   $str = "abcdefghijklmnopqrstuvwxyz";
  break;
  case "3":
   $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  break;
  case "4":
   $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  break;
  case "5":
   $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  break;
  case "6":
   $str = "abcdefghijklmnopqrstuvwxyz1234567890";
  break;
  default:
   $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  break;
}
$result="";
$l=strlen($str);
for($i=0;$i<$length;$i++){
  $num = rand(0, $l);
  $result .= $str[$num];
}
return $result;
}
$authnum =getCode(4,1);
//生成验证码图片
Header("Content-type: image/JPEG");
//srand((double)microtime()*1000000);
//建立空白图片
$im = imagecreate(50,20);
//为图片分配颜色
//黑色
$black = ImageColorAllocate($im, 0,0,0);
//白色
$white = ImageColorAllocate($im, 255,255,255);
//灰色
$gray = ImageColorAllocate($im, 200,200,200);
//将四位整数验证码绘入图片
imagestring($im, 5, 6, 3, $authnum, $white);
//加入干扰象素
for($i=0;$i<200;$i++)
{
imagesetpixel($im, rand()%70, rand()%30, $gray);
}
ImageJPEG($im);
ImageDestroy($im);
?>


有人提出修改字体以及字体大小.解决办法如下:

查找:
//将四位整数验证码绘入图片
imagestring($im, 5, 6, 3, $authnum, $white);



替换成:
ImageTTFText($im,16,0,5,18,$white,"simhei.ttf",$authnum);
//ImageTTFText(int im,int size,int angle,int x,int y,int col,string fontfile,string text):
//本函数将 TTF (TrueType Fonts) 字型文字写入图片。
//参数: size 为字形的尺寸;
// angle 为字型的角度,顺时针计算,0 度为水平(由左到右),90 度则为由下到上的文字;
// x,y 二参数为文字的坐标值 (原点为左上角);
// col 为字的颜色;
// fontfile 为字型文件名称;
// text 是字符串内容。
//加入干扰象素
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]