106)PHP,缩略图代码和结果展示

首先是 代码展示:

  

 1 <?php
 2     
 3    
 4     
 5     class CImage {
 6         /**
 7          * 生成保持原图纵横比的缩略图,支持.png .jpg .gif
 8          * 缩略图类型统一为.png格式
 9          *@param $srcFile     原图像文件名称
10          *@param $toW         缩略图宽
11          *@param $toH         缩略图高
12          *@param$toFile      缩略图文件名称,为空覆盖原图像文件(我在最后把这个去了,就是直接在浏览器上显示,要是你家改动,就直接换倒数第六行的imagepng($ni,$toinfo);
13          * @return bool
14          */
15         public static function CreateThumbnail($srcFile, $toW, $toH, $toFile = "") {
16             if ($toFile == "") {
17                 $toFile = $srcFile;
18             }
19             $info = "";
20             //返回含有4个单元的数组,0-宽,1-高,2-图像类型,3-宽高的文本描述。
21             //失败返回false并产生警告。
22             $data = getimagesize($srcFile, $info);
23             if (!$data)
24                 return false;
25             
26             //将文件载入到资源变量im中
27             switch ($data[2]) //1-GIF,2-JPG,3-PNG
28             {
29                 case 1:
30                     if (!function_exists("imagecreatefromgif")) {
31                         echo "the GD can't support .gif, please use .jpeg or .png! <a href='javascript:history.back();'>back</a>";
32                         exit();
33                     }
34                     $im = imagecreatefromgif($srcFile);
35                     break;
36                 
37                 case 2:
38                     if (!function_exists("imagecreatefromjpeg")) {
39                         echo "the GD can't support .jpeg, please use other picture! <a href='javascript:history.back();'>back</a>";
40                         exit();
41                     }
42                     $im = imagecreatefromjpeg($srcFile);
43                     break;
44                 
45                 case 3:
46                     $im = imagecreatefrompng($srcFile);
47                     break;
48             }
49             
50             //计算缩略图的宽高
51             $srcW = imagesx($im);
52             $srcH = imagesy($im);
53             $toWH = $toW / $toH;
54             $srcWH = $srcW / $srcH;
55             if ($toWH <= $srcWH) {
56                 $ftoW = $toW;
57                 $ftoH = (int)($ftoW * ($srcH / $srcW));
58             } else {
59                 $ftoH = $toH;
60                 $ftoW = (int)($ftoH * ($srcW / $srcH));
61             }
62             
63             if (function_exists("imagecreatetruecolor")) {
64                 $ni = imagecreatetruecolor($ftoW, $ftoH); //新建一个真彩色图像
65                 if ($ni) {
66                     //重采样拷贝部分图像并调整大小 可保持较好的清晰度
67                     imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
68                 } else {
69                     //拷贝部分图像并调整大小
70                     $ni = imagecreate($ftoW, $ftoH);
71                     imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
72                 }
73             } else {
74                 $ni = imagecreate($ftoW, $ftoH);
75                 imagecopyresized($ni, $im, 0, 0, 0, 0, $ftoW, $ftoH, $srcW, $srcH);
76             }
77             
78             //保存到文件 统一为.png格式
79             imagepng($ni); //以 PNG 格式将图像输出到浏览器或文件
80             ImageDestroy($ni);
81             ImageDestroy($im);
82             return true;
83         }
84     }
85     
86     //调用这个类的代码:
87     
88     /*
89     $name='./new_name.png';
90     CImage::CreateThumbnail($name,100,100,'') ;
91     */

 

 

然后那个$name和这个php文件关系:

    

 

然后,结果展示:

    

 

posted @ 2017-08-30 15:10  小油菜1  阅读(211)  评论(0编辑  收藏  举报