《PHP編程最快明白》第七講:php圖片驗(yàn)證碼與縮略圖

字號:


    這個(gè)是輸出4個(gè)驗(yàn)證碼的例子,對于漢字,需要font文件和imagettftext函數(shù),用到的時(shí)候大家再網(wǎng)上搜索吧。
    實(shí)例22圖片驗(yàn)證的核心代碼
    代碼如下:
    <?php
    //header("content-type:image/png");
    $num='1234';
    $imagewidth=60;
    $imageheight=18;
    $numimage=imagecreate($imagewidth,$imageheight);
    imagecolorallocate($numimage,240,240,240);
    for($i=0;$i<strlen($num);$i++){
    $x=mt_rand(1,8)+$imagewidth*$i/4;
    $y=mt_rand(1,$imageheight/4);
    $color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
    imagestring($numimage,5,$x,$y,$num[$i],$color);
    }
    for($i=0;$i<200;$i++){
    $randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255));
    imagesetpixel($numimage,rand()%70,rand()%20,$randcolor);
    }
    imagepng($numimage);
    imagedestroy($numimage);
    ?>
    這個(gè)是輸出4個(gè)驗(yàn)證碼的例子,對于漢字,需要font文件和imagettftext函數(shù),用到的時(shí)候大家再網(wǎng)上搜索吧。你要產(chǎn)生隨機(jī)數(shù),那有mt_rand函數(shù);你還要用到session保存這個(gè)隨機(jī)數(shù);如果需要轉(zhuǎn)成utf-8,需要iconv函數(shù)。
    實(shí)例23縮略圖
    代碼如下:
    <?php
    classSimpleImage{
    var$image;
    var$image_type;
    functionload($filename){
    $image_info=getimagesize($filename);
    $this->image_type=$image_info[2];
    if($this->image_type==IMAGETYPE_JPEG){
    $this->image=imagecreatefromjpeg($filename);
    }elseif($this->image_type==IMAGETYPE_GIF){
    $this->image=imagecreatefromgif($filename);
    }elseif($this->image_type==IMAGETYPE_PNG){
    $this->image=imagecreatefrompng($filename);
    }
    }
    functionsave($filename,$image_type=IMAGETYPE_JPEG,$compression=75,$permissions=null){
    if($image_type==IMAGETYPE_JPEG){
    imagejpeg($this->image,$filename,$compression);
    }elseif($image_type==IMAGETYPE_GIF){
    imagegif($this->image,$filename);
    }elseif($image_type==IMAGETYPE_PNG){
    imagepng($this->image,$filename);
    }
    if($permissions!=null){
    chmod($filename,$permissions);
    }
    }
    functionoutput($image_type=IMAGETYPE_JPEG){
    if($image_type==IMAGETYPE_JPEG){
    imagejpeg($this->image);
    }elseif($image_type==IMAGETYPE_GIF){
    imagegif($this->image);
    }elseif($image_type==IMAGETYPE_PNG){
    imagepng($this->image);
    }
    }
    functiongetWidth(){
    returnimagesx($this->image);
    }
    functiongetHeight(){
    returnimagesy($this->image);
    }
    functionresizeToHeight($height){
    $ratio=$height/$this->getHeight();
    $width=$this->getWidth()*$ratio;
    $this->resize($width,$height);
    }
    functionresizeToWidth($width){
    $ratio=$width/$this->getWidth();
    $height=$this->getheight()*$ratio;
    $this->resize($width,$height);
    }
    functionscale($scale){
    $width=$this->getWidth()*$scale/100;
    $height=$this->getheight()*$scale/100;
    $this->resize($width,$height);
    }
    functionresize($width,$height){
    $new_image=imagecreatetruecolor($width,$height);
    imagecopyresampled($new_image,$this->image,0,0,0,0,$width,$height,$this->getWidth(),$this->getHeight());
    $this->image=$new_image;
    }
    }
    $newfile=UPLOAD_DIR."/icons/".md5($_SESSION['USER']->email).".jpg";//上傳文件保存的目錄
    $image=newSimpleImage();
    $image->load($_FILES['icons']['tmp_name']);//上傳的臨時(shí)文件名
    $image->resizeToWidth(80);設(shè)置寬度
    $image->save($newfile);
    ?>