public function createCode()
{
session_start()
;
//生成验证码图片
header(
"Content-type: image/png")
;
$x_size=80;//长
$y_size=30;//高
// 全数字
$str = "1,2,3,4,5,6,7,8,9,a,b,c,d,f,g,e,h,i,k,m,i,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; //要显示的字符,可自己进行增删
$list = explode(
",", $str)
;
$cmax = count(
$list)
- 1;
$verifyCode = '';
for (
$i = 0; $i < 4; $i++)
{
$randnum = mt_rand(
0, $cmax)
;
$verifyCode .= $list[
$randnum]
; //取出字符,组合成为我们要的验证码字符
}
$_SESSION[
'code']
= $verifyCode; //将字符放入SESSION中
$im = imagecreate(
$x_size, $y_size)
; //生成图片
$color[
'black']
= imagecolorallocate(
$im, 0, 0, 0)
; //此条及以下三条为设置的颜色
$color[
'white']
= imagecolorallocate(
$im, 255, 255, 255)
;
$color[
'gray']
= imagecolorallocate(
$im, 200, 200, 200)
;
$color[
'red']
= imagecolorallocate(
$im, 255, 0, 0)
;
$color[
'LightPink']
= imagecolorallocate(
$im, 255,182,193)
;
$color[
'Violet']
= imagecolorallocate(
$im, 238,130,238)
;
$color[
'Purple']
= imagecolorallocate(
$im, 128,0,128)
;
$color[
'SlateBlue']
= imagecolorallocate(
$im, 106,90,205)
;
$color[
'DoderBlue']
= imagecolorallocate(
$im,30,144,255)
;
$color[
'DeepSkyBlue']
= imagecolorallocate(
$im,0,191,255)
;
$color[
'Aqua']
= imagecolorallocate(
$im, 0,255,255)
;
$color[
'Lime']
= imagecolorallocate(
$im, 0,255,0)
;
$color[
'Cornislk']
= imagecolorallocate(
$im, 255,248,220)
;
$color[
'DarkOrange']
= imagecolorallocate(
$im, 255,140,0)
;
imagefill(
$im, 0, 0, $color[
'white'])
; //给图片填充颜色
/*
* imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。
* */
//将验证码绘入图片
imagestring(
$im, 10, ((
$x_size/2)
-20)
,((
$y_size/2)
-6)
, $verifyCode,$color[
'black']
)
; //将验证码写入到图片中
for (
$i = 0; $i < 100; $i++)
//加入干扰象素
{
$rand_keys=array_rand(
$color,2)
;
imagesetpixel(
$im, rand(
0,$x_size)
, rand(
0,$y_size)
, $color[
$rand_keys[
0]])
; //加入点状干扰素
}
for (
$i = 0; $i < 3; $i++)
//加入干扰象素
{
$rand_keys=array_rand(
$color,2)
;
imagearc(
$im, rand(
0,$x_size)
, rand(
0,$y_size)
, rand(
5,$x_size)
, rand(
1,$y_size)
, 75, 170, $color[
$rand_keys[
0]])
; //加入弧线状干扰素--- int imagearc(int im, int cx, int cy, int w, int h, int s, int e, int col);原点坐标 (0,0) 为图片的左上角,参数 cx、cy 为椭圆心坐标,参数 w 为水平轴长,参数 h 为垂直轴长,参数 s 及 e 分别为起始角与结束角,参数 col 为弧线的颜色。参数 im 表示图形的 handle。
imageline(
$im, rand(
0,$x_size/2)
, rand(
0,$y_size/2)
,rand(
$x_size/2,$x_size)
, rand(
$y_size/2,$y_size)
, $color[
$rand_keys[
1]])
; //加入线条状干扰素
}
imagepng(
$im)
;
imagedestroy(
$im)
;
}
转载请注明原文地址: https://www.6miu.com/read-3856.html