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