<?php
session_start();
$img_w
= 80;
$img_h
= 20;
$pixel_num
= 200;
$is_set_line
= true;
$pixel_mode
= 2;
function
make_seed()
{
list(
$usec
,
$sec
) =
explode
(' ', microtime());
return
(float)
$sec
+ ((float)
$usec
* 100000);
}
mt_srand(make_seed());
$authnum
= mt_rand(100, 99999);
$_SESSION
['verifycode']=
$authnum
;
Header(
"Content-type: image/PNG"
);
$im
= imagecreatetruecolor(
$img_w
,
$img_h
);
$bg_color
= ImageColorAllocate(
$im
, mt_rand(250,255),mt_rand(250,255),mt_rand(250,255));
imagefill(
$im
,0,0,
$bg_color
);
$total_width
= 0;
$word_info
=
array
();
$word_length
=
strlen
(
$authnum
);
for
(
$ii
=0;
$ii
<
$word_length
;
$ii
++)
{
$word_space
= mt_rand(1,5);
$font
= rand(3,5);
mt_rand(1,9)%2 == 0?
$top
= 1:
$top
= 3;
$word_info
[
$ii
]['char'] =
substr
(
$authnum
,
$ii
,1);
$word_info
[
$ii
]['font'] =
$font
;
$word_info
[
$ii
]['offset'] =
$top
;
if
(
$ii
== 0)
{
$word_info
[
$ii
]['width'] = 0;
}
$word_info
[
$ii
]['width'] = imageFontWidth(
$font
)+
$word_space
;
$word_info
[
$ii
]['height'] = imageFontHeight(
$font
);
$word_info
[
$ii
]['color'] = imageColorAllocate(
$im
, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));
$total_width
+=
$word_info
[
$ii
]['width'];
if
(
$ii
== 0)
{
$total_height
= imagefontHeight(
$font
);
}
}
$offset_x
=
floor
((
$img_w
-
$total_width
)/2);
$offset_y
=
floor
((
$img_h
-
$total_height
)/2);
$wid
= 0;
$i
= 0;
foreach
(
$word_info
as
$key
=>
$val
)
{
if
(
$i
>0)
{
$wid
+=
$val
['width'];
}
imagestring(
$im
,
$val
['font'],
$offset_x
+
$wid
,
$val
['offset'] +
$offset_y
,
$val
['char'],
$val
['color']);
$i
++;
}
switch
(
$pixel_mode
)
{
case
1:
$pixel_color
= ImageColorAllocate(
$im
,
mt_rand(50,255),
mt_rand(50,255),
mt_rand(50,255));
for
(
$i
=0;
$i
<
$pixel_num
;
$i
++)
{
imagesetpixel(
$im
, mt_rand()%
$img_w
, mt_rand()%
$img_h
,
$pixel_color
);
}
break
;
case
'2':
for
(
$i
=0;
$i
<=128;
$i
++)
{
$pixel_color
= imagecolorallocate (
$im
, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel(
$im
,mt_rand(2,128),mt_rand(2,38),
$pixel_color
);
}
break
;
default
:
$pixel_color
= ImageColorAllocate(
$im
,
mt_rand(50,255),
mt_rand(50,255),
mt_rand(50,255));
for
(
$i
=0;
$i
<
$pixel_num
;
$i
++)
{
imagesetpixel(
$im
, mt_rand()%
$img_w
, mt_rand()%
$img_h
,
$pixel_color
);
}
break
;
}
ImagePNG(
$im
);
?>