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

 

转载于:https://www.cnblogs.com/yachyu/p/10706188.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值