PHP缩图类
PHP生成图片的缩略图
<?php
/*-------------------------------------------
* 功 能:生成图片的缩略图
* 时 间:2006-8-10
* 作 者:刀鱼
---------------------------------------------*/
class image
{
var $src = ''; //原图片地址
var $dst = ''; //目标图片标示
var $dst_file = ''; //目标图片文件地址
var $dst_width = 0; //目标最大宽度
var $dst_height = 0; //目标最大高度
var $mode = 0; //是否显示(0显示,1不显示)
var $exe = ''; //配置新的文件名例如源文件名是:mm.jpg 可以将其配置成plmm.jpg/gg_mm.jpg
function resize_image($src,$dst_width,$dst_height,$exe='',$mode = 0)
{
$this->src = $src;
$this->dst_width = $dst_width;
$this->dst_height = $dst_height;
$this->exe = $exe;
$this->mode = $mode;
$width = $this->get_msg($this->src,0);
$height = $this->get_msg($this->src,1);
$src_h = $this->get_msg($this->src,2);//return:resouse 返回图象标示符
$size = $this->resize($this->src,$this->dst_width,$this->dst_height);
$this->dst = @imagecreatetruecolor($size[x],$size[y]);
$bool = @imagecopyresized($this->dst,$src_h,0,0,0,0,$size[x],$size[y],$width,$height);
$new_file = $this->exe.basename($this->src);
if($bool)
{
if(isset($mode) && $mode == 0)
{
switch ($this->get_msg($src,3))
{
case 1:
return imagegif($this->dst);
break;
case 2:
return imagejpeg($this->dst);
break;
case 3:
return imagepng($this->dst);
break;
}
}
else
{
switch ($this->get_msg($src,3))
{
case 1:
return imagegif($this->dst,$new_file);
break;
case 2:
return imagejpeg($this->dst,$new_file);
break;
case 3:
return imagepng($this->dst,$new_file);
break;
}
}
}
else
{
echo "拷贝图象并调整大小过程出错啦~";
}
}
/* $src 源图片的地址
* $fetch 获取类型 0 获取image width 1 获取image height 2 获取image 3获取type
*/
function get_msg($src, $fetch = 0)
{
$data = @getimagesize($src);
switch ($fetch)
{
case 0:
$width = $data[0];
return $width;
break;
case 1:
$height = $data[1];
return $height;
break;
case 2:
switch ($data[2])
{
case 1:
$dst = imagecreatefromgif($src);
return $dst;
break;
case 2:
$dst = imagecreatefromjpeg($src);
return $dst;
break;
case 3:
$dst = imagecreatefrompng($src);
return $dst;
break;
}
case 3:
return $data[2];
break;
}
}
function resize($src,$dst_width,$dst_height)
{
$this->src = $src;
$this->dst_width = $dst_width;
$this->dst_height = $dst_height;
$width = $this->get_msg($src,0);
$height = $this->get_msg($src,1);
if($this->dst_width && $width > $this->dst_width )
{
$resize_width = 1;
$width_ratio = $this->dst_width/$width;
}
if($this->dst_height && $height > $this->dst_height)
{
$resize_height = 1;
$height_ratio = $this->dst_height/$height;
}
if($resize_height && $resize_width)
{
//宽度优先
if($width_ratio < $height_ratio)
{
$size[x] = $width * $width_ratio;
$size[y] = $height * $width_ratio;
return $size;
}
//高度优先
else
{
$size[x] = $width * $height_ratio;
$size[y] = $height * $height_ratio;
return $size;
}
}
elseif($resize_height)
{
$size[x] = $width;
$size[y] = $height * $height_ratio;
return $size;
}
elseif($resize_width)
{
$size[x] = $width * $width_ratio;
$size[y] = $height;
return $size;
}
}
}
?>
/*-------------------------------------------
* 功 能:生成图片的缩略图
* 时 间:2006-8-10
* 作 者:刀鱼
---------------------------------------------*/
class image
{
var $src = ''; //原图片地址
var $dst = ''; //目标图片标示
var $dst_file = ''; //目标图片文件地址
var $dst_width = 0; //目标最大宽度
var $dst_height = 0; //目标最大高度
var $mode = 0; //是否显示(0显示,1不显示)
var $exe = ''; //配置新的文件名例如源文件名是:mm.jpg 可以将其配置成plmm.jpg/gg_mm.jpg
function resize_image($src,$dst_width,$dst_height,$exe='',$mode = 0)
{
$this->src = $src;
$this->dst_width = $dst_width;
$this->dst_height = $dst_height;
$this->exe = $exe;
$this->mode = $mode;
$width = $this->get_msg($this->src,0);
$height = $this->get_msg($this->src,1);
$src_h = $this->get_msg($this->src,2);//return:resouse 返回图象标示符
$size = $this->resize($this->src,$this->dst_width,$this->dst_height);
$this->dst = @imagecreatetruecolor($size[x],$size[y]);
$bool = @imagecopyresized($this->dst,$src_h,0,0,0,0,$size[x],$size[y],$width,$height);
$new_file = $this->exe.basename($this->src);
if($bool)
{
if(isset($mode) && $mode == 0)
{
switch ($this->get_msg($src,3))
{
case 1:
return imagegif($this->dst);
break;
case 2:
return imagejpeg($this->dst);
break;
case 3:
return imagepng($this->dst);
break;
}
}
else
{
switch ($this->get_msg($src,3))
{
case 1:
return imagegif($this->dst,$new_file);
break;
case 2:
return imagejpeg($this->dst,$new_file);
break;
case 3:
return imagepng($this->dst,$new_file);
break;
}
}
}
else
{
echo "拷贝图象并调整大小过程出错啦~";
}
}
/* $src 源图片的地址
* $fetch 获取类型 0 获取image width 1 获取image height 2 获取image 3获取type
*/
function get_msg($src, $fetch = 0)
{
$data = @getimagesize($src);
switch ($fetch)
{
case 0:
$width = $data[0];
return $width;
break;
case 1:
$height = $data[1];
return $height;
break;
case 2:
switch ($data[2])
{
case 1:
$dst = imagecreatefromgif($src);
return $dst;
break;
case 2:
$dst = imagecreatefromjpeg($src);
return $dst;
break;
case 3:
$dst = imagecreatefrompng($src);
return $dst;
break;
}
case 3:
return $data[2];
break;
}
}
function resize($src,$dst_width,$dst_height)
{
$this->src = $src;
$this->dst_width = $dst_width;
$this->dst_height = $dst_height;
$width = $this->get_msg($src,0);
$height = $this->get_msg($src,1);
if($this->dst_width && $width > $this->dst_width )
{
$resize_width = 1;
$width_ratio = $this->dst_width/$width;
}
if($this->dst_height && $height > $this->dst_height)
{
$resize_height = 1;
$height_ratio = $this->dst_height/$height;
}
if($resize_height && $resize_width)
{
//宽度优先
if($width_ratio < $height_ratio)
{
$size[x] = $width * $width_ratio;
$size[y] = $height * $width_ratio;
return $size;
}
//高度优先
else
{
$size[x] = $width * $height_ratio;
$size[y] = $height * $height_ratio;
return $size;
}
}
elseif($resize_height)
{
$size[x] = $width;
$size[y] = $height * $height_ratio;
return $size;
}
elseif($resize_width)
{
$size[x] = $width * $width_ratio;
$size[y] = $height;
return $size;
}
}
}
?>
Incoming search terms:
Tags: 缩图 php类