[PHP5]T.T.R 缩略图/截图 生成类!

 


<? php
/**
 *TTR缩略图截图类
 *2007-09-23
 *[url]
http://www.Gx3.cn[/url]
 *QQ:252319874
 *类实例:$a = ResizeImage::getInstance();
 *创建方法:$a->create(string imagename,int resizewidth,int resizeheight,[boolen cutmode],[int cutX],[int cutY])
 *可选参数说明:
 *cutmode,默认false:创建缩略图,true:剪裁图片
 *cutX,cutY:要截取原图片的,xy坐标以左上角为原点
*
*/


class  ResizeImage
{
    
private $type=null;
    
private $width=0;
    
private $height=0;
    
private $resize_width=0;
    
private $resize_height=0;
    
private $cutX=0;
    
private $cutY=0;
    
private $cutmode=true;
    
private $imagepath=null;
    
private $savepath=null;
    
private $uploadpath="uploadfile/";
    
private $im;
    
static $instance=null;
    
private $resizeimge=null;
    
    
private function __construct()
    
{
        
    }

    
    
public function create($imagepath,$resizewidth,$resizeheight,$cutmode=false,$x=0,$y=0)
    
{
        $
this->imagepath=$imagepath;
        $
this->resize_width=$resizewidth;
        $
this->resize_height=$resizeheight;
        $
this->cutmode=$cutmode;
        $
this->cutX=$x;
        $
this->cutY=$y;
        $
this->type=$this->getImageType();
        $
this->initImage();
        $
this->getImageDstPath();
        $
this->width=$this->getImageX();
        $
this->height=$this->getImageY();
        $
this->createResizeImage();
    }

    
    
    
public static function getInstance()
    
{
        
if(self::$instance==null)
        
{
            self::$instance 
= new ResizeImage();
        }

        
return self::$instance;
    }

    
    
    
private function initImage()
    
{
        
switch($this->type)
        
{
            
case "jpg":
                $
this->im=imagecreatefromjpeg($this->imagepath);
                
break;
            
case "gif":
                $
this->im=imagecreatefromgif($this->imagepath);
                
break;
            
case "png":
                $
this->im=imagecreatefrompng($this->imagepath);
                
break;
        }

    }

    
    
private function getNewImageName()
    
{
        $arr
=explode("/",$this->imagepath);
        
if(count($arr)==0)
        
{
            $arr
=explode(".",$this->imagepath);
        }
else{
            $arr
=explode(".",$arr[count($arr)-1]);
        }

        
return $arr[0]."_s.jpg";
    }

    
    
private function createResizeImage()
    
{
        $resizerito
=($this->resize_width/$this->resize_height);
        $rito
=($this->width/$this->height);
        
        
if($this->cutmode)
        
{
            $reim
=imagecreatetruecolor($this->resize_width,$this->resize_height);
            imagecopyresampled($reim,$
this->im,0,0,$this->cutX,$this->cutY,$this->width,$this->height,$this->width,$this->height);
            imagejpeg($reim,$
this->savepath.$this->getNewImageName());
        }
else{
            
if($this->rito >= $this->resizerito)
            
{
                $reim
=imagecreatetruecolor($this->resize_width,$this->resize_width/$rito);
                imagecopyresampled($reim,$
this->im,0,0,0,0,$this->resize_width,($this->resize_width/$rito),$this->width,$this->height);
                imagejpeg($reim,$
this->savepath.$this->getNewImageName());
            }
else{
                $reim
=imagecreatetruecolor($this->resize_height*$rito,$this->resize_height);
                imagecopyresampled($reim,$
this->im,0,0,0,0,($this->resize_height*$rito),$this->resize_height,$this->width,$this->height);
                imagejpeg($reim,$
this->savepath.$this->getNewImageName());
            }

        }

    }

    
    
private function showErrorMessage($str)
    
{
        echo 
"<script>alert('$str')</script>";
    }

    
    
private function getImageX()
    
{
        
return imagesx($this->im);
    }

    
    
private function getImageY()
    
{
        
return imagesy($this->im);
    }

    
    
private function getImageType()
    
{
        
return strtolower(substr(strrchr($this->imagepath,"."),1));
    }

    
    
private function getImageDstPath()
    
{
        
if(substr($this->uploadpath,-1,1)!="/"
        
{
            $
this->savepath=$this->uploadpath."/".date("Ym");
        }
else{
            $
this->savepath=$this->uploadpath.date("Ym");
        }

        $
this->savepath=$this->getFolder($this->savepath);
    }

    
    
private function getFolder($folder)
    
{
        
if(!is_dir($folder))
        
{
            mkdir($folder);
        }

        
return $folder."/";
    }

    
    
public function __destruct()
    
{
        $
this->im=null;
        $
this->width=0;
        $
this->height=0;
        $
this->imagepath=null;
        $
this->savepath=null;
        $
this->resize_width=0;
        $
this->resize_height0;    
    }

}


?>

 

 

http://www.phpchina.com/bbs/thread-37195-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值