才掌柜进销存软件
技术与开发

电话:13598404387

QQ:1688800

地址:郑州市金水区南阳路220号院4号楼3单元26号

网址:www.caizhanggui.com

首页 >技术与开发 > PHP技术PHP技术

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

?>

·上一篇信息:PHPExcel如何读取EXCEL单元格中的图片并保存?
·下一篇信息:PHP上传、生成缩略图、生成文字水印和图片水印
玩伴的笑脸、身边的趣事......
这些记忆中的点点滴滴记载着我们自己的历史。
让我们在成长中成熟,在回忆中感悟......
——才掌柜与您共成长