99久久免费国产精品-天天爽夜夜爽夜夜爽-色噜噜久久综合伊人一本-国产无遮挡又黄又爽免费视频

在線客服:  

「南寧煙寒網(wǎng)絡(luò)」提供南寧網(wǎng)站建設(shè)、網(wǎng)站策劃、南寧網(wǎng)頁(yè)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、南寧SEO優(yōu)化、網(wǎng)站維護(hù)、南寧網(wǎng)站優(yōu)化、南寧網(wǎng)站推廣、廣告設(shè)計(jì)等服務(wù)..

咨詢熱線

在線客服

24小時(shí)免費(fèi)咨詢電話:18978941786

客服時(shí)間:上午9:30~下午6點(diǎn)

當(dāng)前位置:首頁(yè)>> 技術(shù)文章 >> Web開(kāi)發(fā) >> PHP網(wǎng)站建設(shè)開(kāi)發(fā)用的圖形驗(yàn)證碼源碼下載

PHP網(wǎng)站建設(shè)開(kāi)發(fā)用的圖形驗(yàn)證碼源碼下載

收藏 分享 發(fā)布日期:2012-2-12 16:30:44    編輯:admin  文章來(lái)源:  點(diǎn)擊率:

最近經(jīng)常有人問(wèn)我這個(gè)Blog中的圖形驗(yàn)證碼是如何做的.下面是這個(gè)PHP圖形驗(yàn)證碼的源程序.

歡迎指正.

樣式:

class.image.php

/*
===========================================================   
    class.image.php    Zhu Weiwei
    Copyright © 2006-2008
    http://www.jzxue.com China. All Rights Reserved.
===========================================================
*/
class Image
{
    private $img;
    private $width;
    private $height;
    private $color;
    private $font;
    private $mime="image/jpeg";

    /* 1,GIF  2,JPEG  3,PNG */
    private $type=2;
    private $angle=0;
    private $text;
    private $textW;
    private $textH;
    private $size=5;
    private $tcolor;

     
    function __construct($w="100", $h="50"){
        $this->width=$w;
        $this->height=$h;
    }
   
    function create() {
        if ($this->type != 1 && function_exists('imagecreatetruecolor')) {
            // 本函數(shù)不能用于 GIF 文件格式
            // 本函數(shù)需要 GD 2.0.1 或更高版本。
            // 返回一個(gè)圖像標(biāo)識(shí)符,代表了一幅大小為 x_size 和 y_size 的黑色圖像
            $this->img=imagecreatetruecolor($this->width,$this->height);
        }else {
            $this->img=imagecreate($this->width,$this->height);
        }       
    }

    /*
    * 1=GIF     2=JPG
    * 3=PNG
    */
    function createFromFile($f){
        $imgInfo=getimagesize($f);
        $this->type=$imgInfo[2];

        switch($this->type){
        case 1:
            $this->loadGifFile($f);
            break;
           
        case 2:
            $this->loadJpegFile($f);
            break;
           
        case 3:
            $this->loadPngFile($f);
            break;
           
        default:
            die("This Image Type Not Support loadimage !");
            exit();
        }
    }
   
    function loadGifFile($f){
        // 1.6  -- 2.0.28
        //二者之間版本的 GD 庫(kù)時(shí)本函數(shù)不可用
        $this->img=imagecreatefromgif($f ) or die("Load Gif picture error!") ;
        $this->width=imagesx($this->img); 
        $this->height=imagesy($this->img);  
        $this->mime="image/gif";
        $this->type=1;
    }
   
   
    function loadJpegFile($f){
        //JPEG 支持僅在 PHP 與 GD-1.8 或更高版本一起編譯時(shí)可用
        $this->img=imagecreatefromjpeg($f) or die("Load Jpeg picture error!") ;
        $this->width=imagesx($this->img); 
        $this->height=imagesy($this->img);  
        $this->mime="image/jpeg";
        $this->type=2;
    }
   
   
    function loadPngFile($f){
        $this->img=imagecreatefrompng($f )  or die("Load Png picture error!") ;
        $this->width=imagesx($this->img); 
        $this->height=imagesy($this->img);  
        $this->mime="image/png";
        $this->type=3;
    }

     
   
    function setBackgroundColor($r, $g, $b){
        ## 用color 顏色填充了的矩形
        ## 其左上角坐標(biāo)為 x1,y1
        ## 右下角坐標(biāo)為 x2,y2
        ## 0, 0 是圖像的最左上角
        $color =imagecolorallocate($this->img, $r, $g, $b);
        return imagefilledrectangle($this->img, 0, 0, $this->width, $this->height, $color);
    }
   
    function setColor($r, $g, $b){
        $this->color=imagecolorallocate($this->img, $r, $g, $b);
        return (-1 == $this->color) ? (false) : ($this->color);
    }
   
   
    function setTextColor($r, $g, $b){
        $this->tcolor=imagecolorallocate($this->img, $r, $g, $b);
        return (-1 == $this->tcolor) ? (false) : ($this->tcolor);
    }
   
     
    function setText($t){
        $this->text=$t;
    }

    function waterMark($r, $g, $b, $alpha){
        $this->tcolor=imagecolorclosestalpha($this->img, $r, $g, $b, $alpha);
    }
     
   
    function setFontFile($f){ 
        $this->font=$f;
    }
   
    function addTrueTypeText($xoffset,$yoffset){
        #$x=( ( $this->width - $this->textW - 10) > 0) ? ($this->width - $this->textW - 10) : (0) ;
        #$y=( ( $this->height-10) >  0) ? ($this->height-10) : ($this->height);
        // 用 TrueType 字體向圖像寫(xiě)入文本
        // **x,y 坐標(biāo)是字符串左下角坐標(biāo),整幅圖像的左上角為 0,0
        imagettftext($this->img,
            $this->size,
            $this->angle,
            $xoffset,
            $yoffset,
            $this->tcolor,
            $this->font,
            $this->text);
    }

    function addText() {
        // http://www.devdao.com/ 用 color 顏色將字符串 s 畫(huà)到 image
        // **x,y 坐標(biāo)是字符串左上角坐標(biāo),整幅圖像的左上角為 0,0
        // 如果font 是 1,2,3,4 或 5,則使用內(nèi)置字體。
        imagestring ($this->img, $font, $x, $y, $this->text, $this->tcolor);       
    }
   
    function setSize($s){
        $this->size=$s;
    }
   
    function setAngle($a){
        $this->angle=$a;
    }     
   
   
    function setWidth($w){
        $this->width=$w;
    }
   
   
    function setHeight($h){
        $this->height=$h;
    }
   
   
    function getWidth(){
        return $this->width;
    }
   
   
    function getHeight(){
        return $this->height;
    }

    function setPixel($x,$y,$color){
        return imagesetpixel($this->img, $x, $y, $color);
    }

    function setLine($x1,$y1,$x2,$y2,$color){
        return imageline($this->img, $x1, $y1, $x2, $y2, $color);
    }
   
    function createImageFile($f="default"){
        if( !empty($f) ){
            switch($this->type){
                case 1:
                imagegif($this->img, $f.".gif",80);
                break;
               
                case 2:
                imagejpeg($this->img, $f.".jpg" , 80);
                break;
               
                case 3:
                imagepng($this->img, $f.".png", 80);
                break;
               
                default:
                die("This Image Type Not Support create !");
                exit();
            }
            imagedestroy($this->img);
        }
    }

                                       
    function show(){
        header("Content-type: ".$this->mime); 
        switch($this->type){
            case 1:
            imagegif($this->img);
            break;
           
            case 2:
            imagejpeg($this->img);
            break;
           
            case 3:
            imagepng($this->img);
            break;
           
            default:
            die("This Image Type Not Support  show !");
            exit();
        }
        imagedestroy($this->img);
    }
     
    /* Zoom Out Picture */
    function roomOut($maxW, $maxH){
        $WW=(($maxW) and ($this->width > $maxW));
        $HH=(($maxH) and ($this->height > $maxH));
       
        if($WW or $HH){
            if($WW){
                $wRatio =$maxW / $this->width;
                $wResize=true;
            }
            if($HH){
                $hRatio =$maxH / $this->height;
                $hResize=true;
            }
           
            if($wResize and $hResize){
                if($wRatio < $hRatio){
                    $ratio=$wRatio;
                }else{
                    $ratio=$hRatio;
                }
            }elseif($wResize){
                $ratio=$wRatio;
            }elseif($hResize){
                $ratio=$hRatio;
            }
        }else{
            $ratio=1;
        }
       
        $newWidth=$this->width * $ratio; 
        $newHeight=$this->height * $ratio;
       
        if(function_exists("imagecopyresampled")){
            $newimg=imagecreatetruecolor($newWidth, $newHeight);
            imagecopyresampled($newimg, $this->img, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height);
        }else{
            $newimg=imagecreate($newWidth, $newHeight);
            imagecopyresized($newimg, $this->img, 0, 0, 0, 0, $newWidth, $newHeight, $this->width, $this->height);
        }
        $this->img=$newimg;        
        $this->width=  $newWidth;
        $this->height=$newHeight;
    }
}
imgverifycode.php

/*
===========================================================   
    imgverifycode.php    Zhu Weiwei
    Copyright © 2006-2008
    http://www.jzxue.com China. All Rights Reserved.
===========================================================
*/
<?php
require('class.image.php');
# char number
$n = 4;
#font size
$s = 18;
#font padding
$p = 5;
#font angle -a,a
$a = 15;
#image width
$w = ($s+$p)*$n+$p;
#image height;
$h = intval($s*1.5);

$c = ($h + $s)/2;
$o = abs($h-$s-2*$p)/2;
$r = 1;

$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
#$str = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz';
#$str = '0123456789';

$len = strlen($str)-1;
$code = '';


$im = new Image($w,$h);
$im->create();
$im->setBackgroundColor( mt_rand(0xdd,0xff), mt_rand(0xdd,0xff), mt_rand(0xdd,0xff) );

$im->setSize( $s );

for($i=$p; $i<$w-$p; $i=$i+$s+$p){
    $char = $str{mt_rand(0,$len)};
    $code = $code.$char;
   
    $im->setFontFile($CFG->dirroot.'/font/'.mt_rand(2,5).'.ttf');
   
    $im->setText( $char );
    $im->setAngle( mt_rand(-$a,$a) );
    $im->setTextColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66) );
    $im->addTrueTypeText($i,mt_rand($c-$o,$c+$o));
    for($j=0; $j<8*$r; $j++){
        $xs = mt_rand($i-$s/2+$p,$i+$s/2-$p);
        $ys = mt_rand($p,$h-$p);
        $color = $im->setColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66));
        $im->setLine( $xs, $ys, $xs+mt_rand(-$s/2,$s/2), $ys+mt_rand(-$s/2,$s/2), $color);
    }
}   

$SESS = new Session();
$SESS->setParameter('verifycode',$code);

for($i=0; $i<200*$r; $i++){
    $color = $im->setColor(mt_rand(0x0,0x66),mt_rand(0x0,0x66),mt_rand(0x0,0x66));
    $im->setPixel(mt_rand(0,$w), mt_rand(0,$h),$color);
}

$im->show();

本文章由南寧網(wǎng)站建設(shè)南寧網(wǎng)站優(yōu)化南寧網(wǎng)絡(luò)公司整理,轉(zhuǎn)載請(qǐng)注明出處:http://www.lidajijin.com/

南寧煙寒網(wǎng)絡(luò)竭誠(chéng)為您免費(fèi)提供南寧網(wǎng)站建設(shè)南寧網(wǎng)站設(shè)計(jì)南寧網(wǎng)站優(yōu)化、維護(hù)以及網(wǎng)站技術(shù)很方面的網(wǎng)絡(luò)服務(wù)!

南寧網(wǎng)站建設(shè)南寧網(wǎng)絡(luò)公司咨詢熱線電話:0771-5306126 18967841786(24小時(shí)全天電話)

煙寒網(wǎng)絡(luò) - 讓你進(jìn)一步走向成功

主站蜘蛛池模板: 久久青青草原亚洲av无码麻豆| 偷窥村妇洗澡毛毛多| 丰满大爆乳波霸奶| 国产精品一区二区久久不卡| 伊人色综合久久天天五月婷| 久久亚洲精品国产精品 | 在线观看国产成人av片| 狠狠色噜噜狠狠狠狠97| 激情综合色综合啪啪开心| 99精品久久99久久久久| 人妻中文无码久热丝袜| 亚洲中文字幕久久精品无码va| 亚洲av网址在线观看| 激情综合色综合啪啪五月丁香搜索| 亚洲国产成人va在线观看| 国产超碰人人做人人爱| 国产精品永久免费视频| 成年美女黄网站色大免费视频| 亚洲欧美国产精品久久| 国产精品一区二区 尿失禁| 日本japanese丰满白浆| 成人无码a级毛片免费| 国产xxx69麻豆国语对白| 日本一卡2卡3卡四卡精品网站| 久久亚洲精品无码gv| 暗呦交小u女国产精品视频| 香港三级日本三级a视频| 久久天天躁狠狠躁夜夜av浪潮| 夜夜揉揉日日人人| 99999久久久久久亚洲| 日韩精品无码熟人妻视频| 国产精品多p对白交换绿帽| 最新日韩精品中文字幕 | 黑鬼大战白妞高潮喷白浆| 亚洲国产精品无码中文字| 欧美+成+人嘿咻在线视频| 波多野结衣高清一区二区三区| 国产乱码一区二区三区爽爽爽| 无遮挡亲胸捏胸免费视频| 日韩精品人成在线播放| 国产极品美女高潮无套|