[php]代码库
<?php
/**
* 验证码类
*/
class imgCreate {
private $charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ23456789';//随机因子
private $code=""; //验证码
private $codelen; //验证码长度
private $width; //宽度
private $height; //高度
private $img; //图形资源句柄
private $font='/font/simhei.ttf'; //指定字体
private $fontsize; //指定字体大小
//构造方法初始化
public function __construct($width='100',$height='30',$codelen='4',$fontsize='5') {
$this->width=$width;
$this->height=$height;
$this->codelen=$codelen;
$this->fontsize=$fontsize;
}
//生成随机码
private function crecteCode(){
$_len= strlen($this->charset)-1;
for($i=0;$i<$this->codelen;$i++){
$this->code.=$this->charset[mt_rand(0, $_len)];
}
return $this->code;
}
//生成背景
private function createBg(){
$this->img= imagecreatetruecolor($this->width, $this->height);
$Bgcolor= imagecolorallocate($this->img, mt_rand(0, 150), mt_rand(50, 100), mt_rand(0, 150));
imagefill($this->img, 0, 0, $Bgcolor);
}
//生成文字
private function createFont(){
$fontcolor=imagecolorallocate($this->img, mt_rand(100, 200), mt_rand(100, 200), mt_rand(100, 200));
imagefttext ($this->img, $this->fontsize, mt_rand(-10,10), $this->width/6, $this->height/1.2, $fontcolor, $this->font, $this->crecteCode());
}
//生成线条、雪花
private function createLine(){
for($i=0;$i<6;$i++){
$color= imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156));
imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color);
}
for($i=0;$i<20;$i++){
$color= imagecolorallocate($this->img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));
imagestring($this->img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), '*', $color);
}
}
//输出
private function outPut(){
header('Content-type:image/png');
imagepng($this->img);
imagedestroy($this->img);
}
//对外生成
public function doimg(){
$this->createBg();
$this->createLine();
$this->createFont();
$this->outPut();
}
//获取验证码
public function getCode(){
echo $this->crecteCode();
}
}
?>