图像等比例缩放的函数封装(PHP)

 1 <?php
 2 //图像等比例缩放函数
 3 /**
 4     *等比例缩放函数(以保存新图片的方式实现)
 5     *@param string $picname  被缩放的处理图片源
 6     *@param int $maxx 缩放后图片的最大宽度
 7     *@param int $maxy 缩放后图片的最大高度
 8     *@param string $pre 缩放后图片的前缀名
 9     *@return $string 返回后的图片名称() 如a.jpg->s.jpg
10     *
11 **/
12      function imageUpdatesize($picname,$maxx=100,$maxy=100,$pre="s_"){
13         $info=getimageSize($picname);//获取图片的基本信息 
14         $w=$info[0];//获取宽度
15         $h=$info[1];//获取高度
16         //获取图片的类型并为此创建对应图片资源
17         switch($info[2]){
18             case 1://gif
19                   $im=imagecreatefromgif($picname);    
20                   break;                  
21             case 2://jpg
22                   $im=imagecreatefromjpeg($picname);
23                   break;
24             case 3://png
25                  $im=imagecreatefrompng($picname);  
26                   break;
27             default:
28                  die("图像类型错误");
29         }
30         //计算缩放比例
31         if(($maxx/$w)>($maxy/$h)){
32             $b=$maxy/$h;
33         }else{
34             $b=$maxx/$w;    
35         }
36         //计算出缩放后的尺寸
37         $nw=floor($w*$b);
38         $nh=floor($h*$b);
39         //创建一个新的图像源(目标图像)
40         $nim=imagecreatetruecolor($nw,$nh);
41         //执行等比缩放
42         imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
43         //输出图像(根据源图像的类型,输出为对应的类型)
44         $picinfo=pathinfo($picname);//解析源图像的名字和路径信息
45         $newpicname=$picinfo["dirname"]."/".$pre.$picinfo["basename"];
46         switch($info[2]){
47             case 1:
48                 imagegif($nim,$newpicname);
49                 break;
50             case 2:
51                 imagejpeg($nim,$newpicname);
52                 break;
53             case 3:
54                 imagepng($nim,$newpicname);
55                 break;                
56             
57         }
58         //释放图片资源
59         imagedestroy($im);
60         imagedestroy($nim);
61         //返回结果
62         return $newpicname;
63      }
64     // 测试成功
65      echo    imageUpdatesize("images/qie.jpg",150,150,ss_); // 返回的结果为 images/ss_qie.jpg
66 ?>
原文地址:https://www.cnblogs.com/kangshuai/p/4883919.html