生成縮略圖的PHP類

javacas 12年前發布 | 1K 次閱讀 折疊效果

/**

  • 獲得圖像的縮略圖
  • @name get_minImg_class.php * **/ class getMinImg{ public $imgSize=array();//存儲img尺寸數組$imgSize['width'],$imgSize['height'] public $thum=array();//縮略圖數組$thum['width'],$thum['height'] public $newImgSize=array();//生成新圖片的大小$newImgSize['width'],$newImgSize['height'] private $imgfunc;//調用的圖片函數名 private $handle;//文件句柄 public $filename;//文件名 public $imgInfo=array();//文件信息$imgInfo[0]代表文件路徑及名稱(無后綴),$imgInfo[1]代表文件類型 private $newHandle;//新的文件句柄

    function __construct($filename,$thum=array('width'=>150,'height'=>100)){

     $this->filename=$filename;
     if(!(boolean)$this->filename){ return false;}
     $this->thum=$thum;
     $this->getImgType();
     $this->getHandle();
     $this->getImgSize();
     $this->getNewImgSize();
     }
    

    private function getHandle(){//獲得文件句柄

     switch ($this->imgInfo[1]) {
         case 'jpg':
             $this->handle=imagecreatefromjpeg($this->filename);
             $this->imgfunc="imagejpeg";
             break;
         case 'jpeg':
             $this->handle=imagecreatefromjpeg($this->filename);
             $this->imgfunc="imagejpeg";
             break;    
         case 'png':
             $this->handle=imagecreatefrompng($this->filename);
             $this->imgfunc="imagepng";
             break;    
         case 'gif':
             $this->handle=imagecreatefromgif($this->filename);
             $this->imgfunc="imagegif";
             break;
    
         default:$this->handle=imagecreatefromjpeg($this->filename);
             $this->imgfunc="imagejpeg";
             break;
     }
    

    } public function getImgType(){//獲得圖像的類型

     $ext=array();
     $ext=explode(".", $this->filename);
     $this->imgInfo=$ext;
    

    }

    public function getImgSize(){//獲得圖像大小

     $imgSize=array();
     $arr=getimagesize($this->filename);
     $imgSize['width']=$arr[0];
     $imgSize['height']=$arr[1];
     //var_dump($imgSize);
     $this->imgSize=$imgSize;
    

    }

    public function getNewImgSize(){//獲得新圖像的大小

     $newImgSize=array();
     if($this->imgSize['width']>$this->thum['width'] || $this->imgSize['height']>$this->thum['height']){
             if($this->imgSize['width']>$this->imgSize['height']){
                 $newImgSize['width']=$this->thum['width'];
                 $newImgSize['height']=$this->imgSize['height']*($this->thum['width']/$this->imgSize['width']);    
             }
             if($this->imgSize['height']>$this->imgSize['width']){
                 $newImgSize['height']=$this->thum['height'];;
                 $newImgSize['width']=$this->imgSize['width']*($this->thum['height']/$this->imgSize['height']);                
             }
             if($this->imgSize['height']===$this->imgSize['width']){
                 $newImgSize['height']=$this->thum['height'];
                 $newImgSize['width']=$this->thum['width'];
             }
         //echo "big";    
         }else{
             $newImgSize['height']=$this->imgSize['height'];
             $newImgSize['width']=$this->imgSize['width'];
         }
     $this->newImgSize=$newImgSize;
    

    }

    public function getAndSaveImg(){//重新生成圖片

      $this->newHandle=imagecreatetruecolor($this->newImgSize['width'],$this->newImgSize['height']);
     imagecopyresized($this->newHandle, $this->handle, 0, 0, 0, 0, $this->newImgSize['width'], $this->newImgSize['height'], $this->imgSize['width'], $this->imgSize['height']);
     call_user_func_array($this->imgfunc,array($this->newHandle,"newImg/0001.png"));
    

    }

    function __destruct(){

     imagedestroy($this->handle);
     imagedestroy($this->newHandle);
    

    }

}</pre>

 本文由用戶 javacas 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!