Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5119077
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类:

2009-03-23 11:36:29

<?php defined('SYSPATH') or die('No direct scrīpt access.');
/**
 *class name:indentifycode
 *fonction:create an indentifycode
 *version:1.0
 *data:2008-4-15
 *author:szlinz
 *
 *using:
 * c_check_code_image = new indentifycode();
 * $c_check_code_image ->SetCheckImageWH(100,50);//设置显示验证码图片的尺寸
 * $c_check_code_image ->OutCheckImage("d:/www/images/abc.jpg");
 *
 */

class Indentifycode
{
//验证码位数

private $mCheckCodeNum = 4;

//产生的验证码

private $mCheckCode = '';

//验证码的图片

private $mCheckImage = '';

//干扰像素

private $mDisturbColor = '';

//验证码的图片宽度

private $mCheckImageWidth = '80';

//验证码的图片宽度

private $mCheckImageHeight = '20';

/**
*
* @brief 产生验证码
*
*/

private function CreateCheckCode()
{
   $this->mCheckCode = strtoupper(substr(md5(rand()),0,$this->mCheckCodeNum));
   return $this->mCheckCode;
}

/**
*
* @brief 产生验证码图片
*
*/

private function CreateImage()
{
   $this->mCheckImage = @imagecreate ($this->mCheckImageWidth,$this->mCheckImageHeight);
   imagecolorallocate ($this->mCheckImage, 200, 200, 200);
   return $this->mCheckImage;
}

/**
*
* @brief 设置图片的干扰像素
*
*/

private function SetDisturbColor()
{
   for ($i=0;$i<=128;$i++)
   {
    $this->mDisturbColor = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,255), rand(0,255));
    imagesetpixel($this->mCheckImage,rand(2,128),rand(2,38),$this->mDisturbColor);
   }
}

/**
*
* @brief 设置验证码图片的大小
*
* @param $width 宽
*
* @param $height 高
*
*/

public function SetCheckImageWH($width,$height)
{
   if($width==''||$height=='')return false;
   $this->mCheckImageWidth = $width;
   $this->mCheckImageHeight = $height;
   return true;
}

/**
*
* @brief 在验证码图片上逐个画上验证码
*
*/

private function WriteCheckCodeToImage()
{
   for ($i=0;$i<$this->mCheckCodeNum;$i++)
   {
    $bg_color = imagecolorallocate ($this->mCheckImage, rand(0,255), rand(0,128), rand(0,255));
    $x = floor($this->mCheckImageWidth/$this->mCheckCodeNum)*$i+15;
    $y = rand(0,$this->mCheckImageHeight-15);
    imagechar ($this->mCheckImage, 5, $x, $y, $this->mCheckCode[$i], $bg_color);
   }
}
/**
*
* @brief 输出验证码图片
*
*/

public function OutCheckImage($filename)
{
   $this ->CreateCheckCode();
   $this ->CreateImage();
   $this ->SetDisturbColor();
   $this ->WriteCheckCodeToImage();
   imagejpeg($this->mCheckImage,$filename);
}
}
?>

阅读(1918) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~