程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP類:生成縮略圖

PHP類:生成縮略圖

編輯:PHP綜合

以下是個PHP 生成縮略圖的類

<?PHP 

/**  

* 功能:生成縮略圖  

* 作者:PHPox  

* 日期:Thu May 17 09:57:05 CST 2007  

*/  

  

class CreatMiniature   

{   

    //公共變量   

    var $srcFile="";        //原圖   

    var $echoType;            //輸出圖片類型,link--不保存為文件;file--保存為文件   

    var $im="";                //臨時變量   

    var $srcW="";            //原圖寬   

    var $srcH="";            //原圖高   

  

    //設置變量及初始化   

    function SetVar($srcFile,$echoType)   

    {   

        if (!file_exists($srcFile)){   

            echo '源圖片文件不存在!';   

            exit();   

        }   

        $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 Distortion($toFile,$toW,$toH)   

    {   

        $cImg=$this->CreatImage($this->im,$toW,$toH,0,0,0,0,$this->srcW,$this->srcH);   

        return $this->EchoImage($cImg,$toFile);   

        ImageDestroy($cImg);   

    }   

       

    //生成按比例縮放的縮圖   

    function PRorate($toFile,$toW,$toH)   

    {   

        $toWH=$toW/$toH;   

        $srcWH=$this->srcW/$this->srcH;   

        if($toWH<=$srcWH)   

        {   

            $ftoW=$toW;   

            $ftoH=$ftoW*($this->srcH/$this->srcW);   

        }   

        else  

        {   

              $ftoH=$toH;   

              $ftoW=$ftoH*($this->srcW/$this->srcH);   

        }   

        if($this->srcW>$toW||$this->srcH>$toH)   

        {   

            $cImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH);   

            return $this->EchoImage($cImg,$toFile);   

            ImageDestroy($cImg);   

        }   

        else  

        {   

            $cImg=$this->CreatImage($this->im,$this->srcW,$this->srcH,0,0,0,0,$this->srcW,$this->srcH);   

            return $this->EchoImage($cImg,$toFile);   

            ImageDestroy($cImg);   

        }   

    }   

       

    //生成最小裁剪後的縮圖   

    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 BackFill($toFile,$toW,$toH,$bk1=255,$bk2=255,$bk3=255)   

    {   

        $toWH=$toW/$toH;   

        $srcWH=$this->srcW/$this->srcH;   

        if($toWH<=$srcWH)   

        {   

            $ftoW=$toW;   

            $ftoH=$ftoW*($this->srcH/$this->srcW);   

        }   

        else  

        {   

              $ftoH=$toH;   

              $ftoW=$ftoH*($this->srcW/$this->srcH);   

        }   

        if(function_exists("imagecreatetruecolor"))   

        {   

            @$cImg=ImageCreateTrueColor($toW,$toH);   

            if(!$cImg)   

            {   

                $cImg=ImageCreate($toW,$toH);   

            }   

        }   

        else  

        {   

            $cImg=ImageCreate($toW,$toH);   

        }   

        $backcolor = imagecolorallocate($cImg, $bk1, $bk2, $bk3);        //填充的背景顏色   

        ImageFilledRectangle($cImg,0,0,$toW,$toH,$backcolor);   

        if($this->srcW>$toW||$this->srcH>$toH)   

        {        

            $proImg=$this->CreatImage($this->im,$ftoW,$ftoH,0,0,0,0,$this->srcW,$this->srcH);   

             if($ftoW<$toW)   

             {   

                 ImageCopy($cImg,$proImg,($toW-$ftoW)/2,0,0,0,$ftoW,$ftoH);   

             }   

             else if($ftoH<$toH)   

             {   

                 ImageCopy($cImg,$proImg,0,($toH-$ftoH)/2,0,0,$ftoW,$ftoH);   

             }   

             else  

             {   

                 ImageCopy($cImg,$proImg,0,0,0,0,$ftoW,$ftoH);   

             }   

        }   

        else  

        {   

             ImageCopyMerge($cImg,$this->im,($toW-$ftoW)/2,($toH-$ftoH)/2,0,0,$ftoW,$ftoH,100);   

        }   

        return $this->EchoImage($cImg,$toFile);   

        ImageDestroy($cImg);   

    }   

       

  

    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;   

        }   

    }   

}   

?> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved