区别:
imagecopyresized 生成一般缩略图
imagecopyresampled 生成高清缩略图
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($dst_width,$dst_height);
//$bool =imagecopyresized($this->dst,$src_h, 0, 0, 0, 0,140,105, $width, $height); //生成一般缩略图
$bool =imagecopyresampled($this->dst,$src_h, 0, 0, 0, 0,$dst_width,$dst_height, $width, $height); //生成高清缩略图
//$new_file = $this->exe.basename($this->src);
//$new_file ='smll'.basename($this->src);
$new_file =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;
}
}
}
$img=new image;
$img->resize_image('原图片路径',140,105,'',1);
?>
|