php缩略图类
其中,若使用bmp图片处理,需包含bmp.php,a href=http://blog.csdn.net/joliny/article/details/1659441#comments title=http://blog.csdn.net/joliny/article/details/1659441#commentshttp://blog.csdn.net/joliny/article/details/1659441#
其中,若使用bmp图片处理,需包含bmp.php,
http://blog.csdn.net/joliny/article/details/1659441#comments
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); //生成120x90大小 *$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
精彩图集
精彩文章