好用的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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值