Andy's Blog » » PHP缩图类

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;
        
}
    
}
}
?>

Incoming search terms:

Tags: 缩图 php类

本文地址: http://www.21andy.com/new/20060818/383.html