好用的PHP生產縮略圖類

class Thumb{
    //公共變量
    var $srcFile="";   //原圖
    var $echoType;   //輸出圖片類型,link--不保存爲文件;file--保存爲文件
    var $im="";     //臨時變量
    var $srcW="";    //原圖寬
    var $srcH="";    //原圖高

    //設置變量及初始化
 function SetVar($srcFile,$echoType){
  $this->srcFile=$srcFile;
  $this->echoType=$echoType;

        $info = "";
        $data = GetImageSize($this->srcFile,$info);
  switch ($data[2]){
   case 1:
    if(!function_exists("imagecreatefromgif")){
     echo "你的GD庫不能使用GIF格式的圖片,請使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>";
     exit();
    }
    $this->im = ImageCreateFromGIF($this->srcFile);
    break;
   case 2:
    if(!function_exists("imagecreatefromjpeg")){
     echo "你的GD庫不能使用jpeg格式的圖片,請使用其它格式的圖片!<a href='javascript:go(-1);'>返回</a>";
     exit();
    }
    $this->im = ImageCreateFromJpeg($this->srcFile);
    break;
   case 3:
    $this->im = ImageCreateFromPNG($this->srcFile);
    break;
  }
  $this->srcW=ImageSX($this->im);
  $this->srcH=ImageSY($this->im);
 }

    //生成最小裁剪後的縮圖
    function Cut($toFile,$toW,$toH){
          $toWH=$toW/$toH;
          $srcWH=$this->srcW/$this->srcH;
          if($toWH<=$srcWH){
               $ctoH=$toH;
               $ctoW=$ctoH*($this->srcW/$this->srcH);
          }else{
              $ctoW=$toW;
              $ctoH=$ctoW*($this->srcH/$this->srcW);
          }
        $allImg=$this->CreatImage($this->im,$ctoW,$ctoH,0,0,0,0,$this->srcW,$this->srcH);
        $cImg=$this->CreatImage($allImg,$toW,$toH,0,0,($ctoW-$toW)/2,($ctoH-$toH)/2,$toW,$toH);
        return $this->EchoImage($cImg,$toFile);
        ImageDestroy($cImg);
        ImageDestroy($allImg);
    }


    function CreatImage($img,$creatW,$creatH,$dstX,$dstY,$srcX,$srcY,$srcImgW,$srcImgH){
        if(function_exists("imagecreatetruecolor")){
            @$creatImg = ImageCreateTrueColor($creatW,$creatH);
            if($creatImg)
                ImageCopyResampled($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
            else{
                $creatImg=ImageCreate($creatW,$creatH);
                ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
            }
         }else{
            $creatImg=ImageCreate($creatW,$creatH);
            ImageCopyResized($creatImg,$img,$dstX,$dstY,$srcX,$srcY,$creatW,$creatH,$srcImgW,$srcImgH);
         }
         return $creatImg;
    }
    //輸出圖片,link---只輸出,不保存文件。file--保存爲文件
    function EchoImage($img,$to_File){
        switch($this->echoType){
            case "link":
                if(function_exists('imagejpeg')) return ImageJpeg($img);
                else return ImagePNG($img);
                break;
            case "file":
                if(function_exists('imagejpeg')) return ImageJpeg($img,$to_File);
                else return ImagePNG($img,$to_File);
                break;
        }
    }
}

    $cm=new Thumb();     $cm->SetVar("酒啊啊.jpg","file");     $cm->Cut("sample.jpg",120,90);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章