自己编写的生成缩略图的类

/**
 * 获得图像的缩略图
 * @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);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值