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