首页 > PHP > php缩略图类

php缩略图类

require_once(‘bmp.php’);
/*
* Created on 20:31 2011-8-2
* Author : LKK , http://lianq.net
* 使用方法:
*$resizeimage = new myThumbClass($file_name,120,90,$thumb,0,0); //生成120×90大小
*$resizeimage = new myThumbClass($file_name,1,2,$thumb,1,233); //生成高,宽之中最大233
*$resizeimage = new myThumbClass($file_name,660,1,$thumb,-1,0); //生成宽度660
*$resizeimage = new myThumbClass($file_name,1,660,$thumb,-1,0); //生成高度660
*注意:新高度或新宽度都不能为0
*/
class myThumbClass{
public $sur_file; //读取的原图片
public $des_file; //生成目标图片
public $tem_file; //临时图片
public $tag; //缩略标签 0,默认,按固定的高宽生成 1,按比列或固定最大长度生成 -1,按某个宽度或某个高度缩小
public $resize_width; //$tag为0时,目标文件宽
public $resize_height; //$tag为0时,目标文件高
public $sca_max; //$tag为1时,<0$sca_max<1时为缩小比例;$sca_max>1时为最大长度(高或宽之中的最大值)
public $type; //图片类型
public $width; //原图片宽
public $height; //原图片高
//构造函数
public function __construct($surpic, $reswid, $reshei, $despic, $mark, $scamax){
$this->sur_file = $surpic;
$this->resize_width = $reswid;
$this->resize_height = $reshei;
$this->tag = $mark;
$this->sca_max = $scamax;
$this->type = strtolower(substr(strrchr($this->sur_file,”.”),1)); //获取图片类型
$this->init_img(); //初始化图片
$this->des_file = $despic; //目标图片地址
$this->width = imagesx($this->tem_file);
$this->height = imagesy($this->tem_file);
$this->new_img();
imagedestroy($this->tem_file);
}
//图片初始化函数
private function init_img(){
if($this->type == ‘jpeg’){
$this->tem_file = imagecreatefromjpeg($this->sur_file);
}elseif($this->type == ‘jpg’){
$this->tem_file = imagecreatefromjpeg($this->sur_file);
}elseif($this->type == ‘gif’){
$this->tem_file = imagecreatefromgif($this->sur_file);
}elseif($this->type == ‘png’){
$this->tem_file = imagecreatefrompng($this->sur_file);
}elseif($this->type == ‘bmp’){
$this->tem_file = imagecreatefrombmp($this->sur_file); //bmp.php中包含
}
}
//图片生成函数
private function new_img(){
$ratio = ($this->width)/($this->height); //原图比例
$resize_ratio = ($this->resize_width)/($this->resize_height); //缩略后比例
$newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);//生成新图片
if($this->tag == 0){ //按固定高宽截取缩略图
$newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);//生成新图片
if($ratio>=$resize_ratio){//即等比例下,缩略图的高比原图长,因此高不变
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, $this->resize_width,$this->resize_height, (($this->height)*$resize_ratio), $this->height);
}elseif($ratio<$resize_ratio){//即等比例下,缩略图的宽比原图长,因此宽不变
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, $this->resize_width,$this->resize_height, $this->width, (($this->width)/$resize_ratio));
}
}elseif($this->tag == 1){ //按固定比例或最大长度缩小
if($this->sca_max < 1){ //按比例缩小
$newimg = imagecreatetruecolor((($this->width)*($this->sca_max)),(($this->height)*($this->sca_max)));//生成新图片
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, (($this->width)*($this->sca_max)), (($this->height)*($this->sca_max)), $this->width, $this->height);
}elseif($this->sca_max > 1){ //按某个最大长度缩小
if($ratio>=1){ //宽比高长
$newimg = imagecreatetruecolor($this->sca_max,($this->sca_max/$ratio));//生成新图片
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, $this->sca_max,($this->sca_max/$ratio), $this->width, $this->height);
}else{
$newimg = imagecreatetruecolor(($this->sca_max*$ratio),$this->sca_max);//生成新图片
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, ($this->sca_max*$ratio),$this->sca_max, $this->width, $this->height);
}
}
}elseif($this->tag == -1){ //按某个宽度或某个高度缩小
if($resize_ratio>=1){//新高小于新宽,则图片按新宽度缩小
$newimg = imagecreatetruecolor($this->resize_width,($this->resize_width/$ratio));//生成新图片
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, $this->resize_width,($this->resize_width/$ratio), $this->width, $this->height);
}elseif($resize_ratio<1){//新宽小于新高,则图片按新高度缩小
$newimg = imagecreatetruecolor(($this->resize_height*$ratio),$this->resize_height);//生成新图片
imagecopyresampled($newimg, $this->tem_file, 0, 0, 0, 0, ($this->resize_height*$ratio),$this->resize_height, $this->width, $this->height);
}
}
//输出新图片
if($this->type == ‘jpeg’ || $this->type == ‘jpg’){
imagejpeg($newimg,$this->des_file);
}elseif($this->type == ‘gif’){
imagegif($newimg,$this->des_file);
}elseif($this->type == ‘png’){
imagepng($newimg,$this->des_file);
}elseif($this->type == ‘bmp’){
imagebmp($newimg,$this->des_file);//bmp.php中包含
}
}#function new_img() end
}#end class

分类:PHP 标签:
  1. 还没有评论。
  1. No trackbacks yet.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: