<?
php
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
/**/
/**
*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坐标以左上角为原点
**/
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
class
ResizeImage
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
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()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
}
public function create($imagepath,$resizewidth,$resizeheight,$cutmode=false,$x=0,$y=0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$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()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(self::$instance==null)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
self::$instance = new ResizeImage();
}
return self::$instance;
}
private function initImage()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
switch($this->type)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
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()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$arr=explode("/",$this->imagepath);
if(count($arr)==0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$arr=explode(".",$this->imagepath);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
}else...{
$arr=explode(".",$arr[count($arr)-1]);
}
return $arr[0]."_s.jpg";
}
private function createResizeImage()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$resizerito=($this->resize_width/$this->resize_height);
$rito=($this->width/$this->height);
if($this->cutmode)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$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());
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
}else...{
if($this->rito >= $this->resizerito)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$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());
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
}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)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
echo "<script>alert('$str')</script>";
}
private function getImageX()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return imagesx($this->im);
}
private function getImageY()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return imagesy($this->im);
}
private function getImageType()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return strtolower(substr(strrchr($this->imagepath,"."),1));
}
private function getImageDstPath()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(substr($this->uploadpath,-1,1)!="/")
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$this->savepath=$this->uploadpath."/".date("Ym");
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
}else...{
$this->savepath=$this->uploadpath.date("Ym");
}
$this->savepath=$this->getFolder($this->savepath);
}
private function getFolder($folder)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(!is_dir($folder))
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
mkdir($folder);
}
return $folder."/";
}
public function __destruct()
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
$this->im=null;
$this->width=0;
$this->height=0;
$this->imagepath=null;
$this->savepath=null;
$this->resize_width=0;
$this->resize_height0;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
http://www.phpchina.com/bbs/thread-37195-1-1.html