PHP图片等比例缩放函数

 1 /**
 2  * $src_file:原文件
 3  * $dst_w:目标输出的宽
 4  * $dst_h:目标输出的高
 5  */
 6 
 7 function thumb($src_file,$dst_w,$dst_h){
 8 
 9     # 获取图片信息
10     $imarr = getimagesize($src_file);
11 
12     # 获取图片类型 / 变量函数
13         switch ($imarr[2]) {
14             case 1:
15                 $imagecreatefrom = "imagecreatefromgif";
16                 $imageout = "imagegif";
17                 break;
18             case 2:
19                 $imagecreatefrom = "imagecreatefromjpeg";
20                 $imageout = "imagejpeg";
21                 break;
22             case 3:
23                 $imagecreatefrom = "imagecreatefrompng";
24                 $imageout = "imagepng";
25                 break;    
26         }
27 
28     # 大图
29     $src_im = $imagecreatefrom($src_file);
30 
31         # 等比例计算目标资源的宽和高
32         # 大图大小
33         $src_w = imagesx($src_im);
34         $src_h = imagesy($src_im);
35 
36         # 等比例缩放
37         $scale = ($src_w/$dst_w)>($src_h/$dst_h)?($src_w/$dst_w):($src_h/$dst_h);
38 
39         # 向下取整
40         $dst_w = floor($src_w/$scale);
41         $dst_h = floor($src_h/$scale);
42 
43         # 计算结束
44 
45     # 小图
46     $dst_im = imagecreatetruecolor($dst_w,$dst_h);
47 
48     # 小图坐标
49     $dst_x = 0;
50     $dst_y = 0;
51 
52     # 大图坐标
53     $src_x = 0;
54     $src_y = 0;
55 
56     # 缩放
57     imagecopyresampled($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
58 
59     # 获取大图文件名并加工成小图文件名
60     $t_name = 't_'.basename($src_file);
61 
62     # 获取大图文件目录
63     $s_dir = dirname($src_file);
64 
65     # 定义小图保存目录,与大图一样
66     $s_file = $s_dir.'/'.$t_name;    
67 
68     # 输出类型
69     header('content-type:image/jpeg');
70 
71     # 输出小图
72     $imageout($dst_im,$s_file);
73 
74 }
75 
76 $src_file = 'imgs/3.jpg';
77 
78 # 函数调用
79 thumb($src_file,100,100);

 

posted @ 2019-04-14 17:49  yach_yu  阅读(1584)  评论(0编辑  收藏  举报