PHP生成高清晰缩略图

区别:

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

posted @ 2009-05-18 15:32  tudou  阅读(1558)  评论(0)    收藏  举报