<?php
class
Code{
private
$width
;
private
$height
;
private
$num
;
private
$imgType
;
private
$Type
;
private
$hb
;
public
$codestr
;
public
function
__construct(
$height
=20,
$num
=4,
$imgType
=
"jpeg"
,
$Type
=1){
$this
->width =
$num
*20;
$this
->height =
$height
;
$this
->num =
$num
;
$this
->imgType =
$imgType
;
$this
->Type =
$Type
;
$this
->codestr =
$this
->codestr();
$this
->zuhe();
}
private
function
codestr(){
switch
(
$this
->Type){
case
1:
$str
= implode(
""
,
array_rand
(range(0,9),
$this
->num));
break
;
case
2:
$str
= implode(
""
,
array_rand
(
array_flip
(range(a,z)),
$this
->num));
break
;
case
3:
for
(
$i
=0;
$i
<
$this
->num;
$i
++){
$m
= rand(0,2);
switch
(
$m
){
case
0:
$o
= rand(48,57);
break
;
case
1:
$o
= rand(65,90);
break
;
case
2:
$o
= rand(97,122);
break
;
}
$str
.= sprintf(
"%c"
,
$o
);
}
break
;
}
return
$str
;
}
private
function
Hb(){
$this
->hb = imagecreatetruecolor(
$this
->width,
$this
->height);
}
private
function
Bg(){
return
imagecolorallocate(
$this
->hb,rand(130,250),rand(130,250),rand(130,250));
}
private
function
Font(){
return
imagecolorallocate(
$this
->hb,rand(0,100),rand(0,100),rand(0,100));
}
private
function
BgColor(){
imagefilledrectangle(
$this
->hb,0,0,
$this
->width,
$this
->height,
$this
->Bg());
}
private
function
ganrao(){
$sum
=
floor
((
$this
->width)*(
$this
->height)/3);
for
(
$i
=0;
$i
<
$sum
;
$i
++){
imagesetpixel(
$this
->hb,rand(0,
$this
->width),rand(0,
$this
->height),
$this
->Bg());
}
}
private
function
huxian(){
for
(
$i
=0;
$i
<
$this
->num;
$i
++){
imageArc(
$this
->hb,rand(0,
$this
->width),rand(0,
$this
->height),rand(0,
$this
->width),rand(0,
$this
->height),rand(0,360),rand(0,360),
$this
->Bg());
}
}
private
function
xiezi(){
for
(
$i
=0;
$i
<
$this
->num;
$i
++){
$x
=
ceil
(
$this
->width/
$this
->num)*
$i
;
$y
=rand(1,
$this
->height-15);
imagechar(
$this
->hb,5,
$x
+4,
$y
,
$this
->codestr[
$i
],
$this
->Font());
}
}
private
function
OutImg(){
$shuchu
=
"image"
.
$this
->imgType;
$header
=
"Content-type:image/"
.
$this
->imgType;
if
(function_exists(
$shuchu
)){
header(
$header
);
$shuchu
(
$this
->hb);
}
else
{
exit
(
"GD库没有此类图像"
);
}
}
private
function
zuhe(){
$this
->Hb();
$this
->BgColor();
$this
->ganrao();
$this
->huxian();
$this
->xiezi();
$this
->OutImg();
}
public
function
getCodeStr(){
return
$this
->codestr;
}
}
$a
=
new
Code();
$a
->getCodeStr();
?>