/**
* Verification code class
* chaojie2008@126.com
* 2012-02-09
**/
class Vailimg {
private $height;
private $codeNum;
private $checkCode; // Verification code characters
private $image;
/* The constructor is used to instantiate the verification code object and initialize some member attributes */
/* Parameter width: Set the width of the verification code image, the default width value is 60 pixels */
/* Parameter height: Set the height of the verification code image, the default height value is 20 pixels */
/* Parameter codeNum: Set the number of letters and numbers in the verification code, the default number is 4 */
function __construct($width=60, $height=20, $codeNum=4) {
$this->checkCode=$this->createCheckCode(); //Initialize the member attribute checkCode
}
function showImage(){ //Output the image to the browser by accessing this method
}
function getCheckCode(){ //Access this method to obtain a randomly created verification code string
return $this->checkCode;
}
Private function getcreateImage () {// used to create image resources, and first made the back
$this->image=imageCreate($this->width,$this->height);
$back=imageColorAllocate($this->image, 255, 255, 255);
$border=imageColorAllocate($this->image, 0, 0, 0);
imageRectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
}
private function createCheckCode(){ //Randomly generate a user-specified number of strings
for($i=0;$i<$this->codeNum;$i++) {
$number=rand(0,2);
switch($number){
case 0: $rand_number=rand(48,57);break;
Case 1: $ rand_number = RAND (65,90); break; // uppercase letters
case 2: $rand_number=rand(97,122);break;
}
$ascii=sprintf("%c",$rand_number);
$ascii_number=$ascii_number.$ascii;
return $ascii_number;
private function setDisturbColor() { //Set the interference pixels and output 100 points of different colors to the image
for ($i=0;$i<=50;$i++) {
$color = imagecolorallocate($this->image, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->height-2),$color);
}
}
private function outputText() { //Output random colors, random placement, and random strings to the image
for ($i=0;$i<=$this->codeNum;$i++) {
$bg_color = imagecolorallocate($this->image, rand(0,255), rand(0,128), rand(0,255));
$x = floor($this->width/$this->codeNum)*$i+3;
$y = rand(0,$this->height-15);
Imagechar($this->image, 5, $x, $y, $this->checkCode[$i], $bg_color);
}
}
private function outputImage(){ // Automatically detect the image type supported by GD and output the image
If(imagetypes() & IMG_GIF){ //Determine whether the function that generates GIF format images exists
header("Content-type: image/gif"); //Send header information and set the MIME type to image/gif
Imagegif ($ This- & gt; Image); // The image outputs the image to the browser
in GIF format
} Elseif (ImageTypes () & IMG_JPG) {// determine whether the function that generates a jpg format image exists
header("Content-type: image/jpeg"); //Send header information and set the MIME type to image/jpeg
imagejpeg($this->image, "", 0.5); // Output the image to the browser in JPEN format
} Elseif (ImageTypes () & IMG_PNG) {// determine whether the function that generates a PNG format image exists
header("Content-type: image/png"); //Send header information and set the MIME type to image/png
ImagePng ($ this- & gt; Image); // The image outputs the image to the browser
in PNG format
}elseif(imagetypes() & IMG_WBMP){ // Determine whether the function to generate WBMP format images exists
header("Content-type: image/vnd.wap.wbmp"); //Sending header is image/wbmp
ImageWBMP ($ this- & gt; image); // Output the image into the browser in WBMP format
//If there is no supported image type
DIE ("PHP does not support image creation!"); // Do not output images, output a error message, and exit the program
}
function __destruct(){ //Destroy image resources and release memory before the object ends
ImageDestroy ($ this- & gt; Image); // Call the method in the GD library to destroy image resources
}
}
?>
Excerpted from chaojie2009’s column