PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    PHP缩略图类ImageResize

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:PHP缩略图类ImageResize,分别生成三种不同尺寸的图片。调用方法很简单只要传参数高度和宽度,及新图片的名称。<?php/***缩略图生成类,使...
    PHP缩略图类ImageResize,分别生成三种不同尺寸的图片。调用方法很简单只要传参数高度和宽度,及新图片的名称。

    1. <?php 
    2. /** 
    3.  * 缩略图生成类,使用示例: 
    4.  *634381967@qq.com 
    5.  *http://www.bcty365.com 
    6.  */ 
    7. /* 
    8. $newimage=new ImageResize(); 
    9. $newimage->resize("1.jpg","1_lit.jpg",644,373); 
    10. echo $newimage->GetLastError(); 
    11.  */ 
    12. class ImageResize{ 
    13.     private $localimage;//原图路径 
    14.     private $remoteimage;//缩略图保存路径 
    15.     private $localinfo;//原图属性 
    16.     private $error
    17.              
    18.     function resize($localimg$remoteimg$x$y) { 
    19.         //检测是否支持gd图像处理 
    20.         if(!$this->_checkenv()){ 
    21.             return false; 
    22.         } 
    23.         $this->localimage = $localimg
    24.         $this->remoteimage = $remoteimg
    25.         $this->localinfo = getimagesize($this->localimage); //获取本地图像的信息 
    26.         return $this->_resize($x,$y); 
    27.     } 
    28.     /** 
    29.      * 检测当前环境是否支持GD 
    30.      */ 
    31.     private function _checkenv(){ 
    32.         $gd_info=gd_info(); 
    33.         if(!$gd_info){ 
    34.             $this->error[]="当前环境不支持GD图像处理,请先安装GD库并开启PHP相关扩展"
    35.             return false; 
    36.         } 
    37.         return true; 
    38.     } 
    39.      
    40.     /** 
    41.      * 生成缩略图主函数 
    42.      * @param int $x 指定的缩略图宽度 
    43.      * @param int $y 指定的缩略图高度 
    44.      * @return boolean 
    45.      */ 
    46.     private function _resize($x,$y){ 
    47.         if(!$this->localinfo){ 
    48.             $this->error[]="本地图像文件不存在"
    49.             return false; 
    50.         } 
    51.         //创建图像句柄 
    52.         $im=@$this->_create($this->localinfo[2]); 
    53.         if(!$im){ 
    54.             $this->error[]="当前GD库不支持图像类型:{$this->localinfo['mime']}"
    55.             return false; 
    56.         } 
    57.         $dstsize=$this->_dstsize($x$y); 
    58.         $dstim=@imagecreatetruecolor($dstsize["width"],$dstsize["height"]); 
    59.         $whitecolor=@imagecolorallocatealpha($dstim, 0, 0, 0,127); 
    60.         imagefill($dstim,0,0,$whitecolor); 
    61.         $re=@imagecopyresampled($dstim$im, 0, 0, 0, 0, $dstsize["width"], $dstsize["height"], $this->localinfo[0], $this->localinfo[1]); 
    62.         if(!$re){ 
    63.             $this->error[]="图像重新采样失败"
    64.             return false; 
    65.         } 
    66.         if(!imagejpeg($dstim$this->remoteimage)){ 
    67.             if(!imagepng($dstim,$this->remoteimage)){ 
    68.                 if(!imagegif($dstim,$this->remoteimage)){ 
    69.                     $this->error[]="保存缩略图到{$this->remoteimage}失败,请检查gd环境是否正常和缩略图文件夹的写入权限。"
    70.                     return false; 
    71.                 } 
    72.             } 
    73.         } 
    74.         $this->error[]="success"
    75.         return true; 
    76.     } 
    77.      
    78.     /** 
    79.      * 根据本地图片类型,创建图片资源 
    80.      * @param 图像类型代码 $code 
    81.      * @return resource/boolean 成功则返回resourse失败则返回false 
    82.      */ 
    83.     private function _create($code){ 
    84.         $src=$this->localimage; 
    85.         switch ($code){ 
    86.             case 1: 
    87.                 return imagecreatefromgif($src); 
    88.                 break
    89.             case 2: 
    90.                 return imagecreatefromjpeg($src); 
    91.                 break
    92.             case 3: 
    93.                 return imagecreatefrompng($src); 
    94.                 break
    95.             default : 
    96.                 return false; 
    97.                 break
    98.         } 
    99.     } 
    100.      
    101.     /** 
    102.      * 按比例计算合适的宽度 
    103.      * @param int $x 指定的缩略图宽度 
    104.      * @param int $y 指定的缩略图高度 
    105.      * @return array 包含调整后的缩略图宽度和高度 
    106.      */ 
    107.     private function _dstsize($x,$y){ 
    108.         list($srcwidth,$srcheight)=$this->localinfo; 
    109.         if(($srcwidth/$srcheight)<($x/$y)){ 
    110.             $x=floor($y*$srcwidth/$srcheight); 
    111.         }else
    112.             $y=floor($x*$srcheight/$srcwidth); 
    113.         } 
    114.         $dstsize["width"]=$x
    115.         $dstsize["height"]=$y
    116.         return $dstsize
    117.     } 
    118.  
    119.  
    120.     /** 
    121.      * 获取最后一条错误信息 
    122.      * return string 
    123.      */ 
    124.     function GetLastError(){ 
    125.         return array_pop($this->error); 
    126.     } 
    127.      
    128.     /** 
    129.      * 获取所有错误信息 
    130.      * return array 
    131.      */ 
    132.     function GetAllError(){ 
    133.         return $this->error; 
    134.     } 



    1. <?php 
    2. header("Content-type: text/html; charset=utf-8"); 
    3. include_once 'ImageResize.class.php'
    4. //实例化缩略图类  
    5. $newimage = new ImageResize(); 
    6. //将当前目录下的test.jpg生成缩略图并保存到test_400_400.jpg,指定的宽度高度分别是400和400像素 
    7. $newimage->resize("demo.jpg""demo_400_400.jpg", 400, 400); 
    8. $newimage->resize("demo.jpg""demo_200_200.jpg", 200, 200); 
    9. $newimage->resize("demo.jpg""demo_50_50.jpg", 50, 50); 
    10. //获取最后一条错误信息,如果生成成功则输出'success' 
    11. echo "<p style='color:red;font-weight:bold;text-align:center;font-size:16px;margin:50px 0 20px'>结果:".$newimage->GetLastError()."</p>"
    12. ?> 


    类下载:ImageResize.zip


    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-4813-1.html
    相关热词搜索: PHP ImageResize