PHP图片生成缩略图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP图片生成缩略图相关的知识,希望对你有一定的参考价值。

代码:

 1 <?php
 2 class CImage{
 3 /**
 4  * 生成缩略图
 5  * @param $srcFile (string)  参数说明:源文件路径
 6  * @param $size int 缩略图的大小,默认值150
 7  * @param $is_square bool 是否正方形,默认值false
 8  * @param $quality int 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。
 9  */
10 public function create_thumbnails($srcFile, $dstFile, $size = 150, $is_square = false, $quality = 75){
11     if(file_exists($srcFile)){
12         //返回含有4个单元的数组,0-宽,1-高,2-图像类型,3-宽高的文本描述。 
13         $data = getimagesize($srcFile);
14         //将文件载入到资源变量im中 
15         switch ($data[2]){  //1-GIF,2-JPG,3-PNG  
16             case 1:
17                 $im = imagecreatefromgif($srcFile);
18                 break;
19             case 2:
20                 $im = imagecreatefromjpeg($srcFile);
21                 break;
22             case 3:
23                 $im = imagecreatefrompng($srcFile);
24                 break;
25         }
26         if(!$im){
27             return false;
28         }
29         //设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)
30         imagesavealpha($im, true);
31         //
32         $srcW = imagesx($im);
33         $srcH = imagesy($im);
34         $srcX = $srcY = 0;
35         if($is_square == true){
36             if($srcH >= $srcW){
37                 $srcX = 0;
38                 $srcY = floor(($srcH - $srcW) / 2);
39                 $srcH = $srcW;
40             }else {
41                 $srcY = 0;
42                 $srcX = floor(($srcW - $srcH) / 2);
43                 $srcW = $srcH;
44             }
45             $fdstH = $fdstW = $size;
46         } else {
47             if ($srcW < $size && $srcH < $size) {
48                 return false;
49             }
50             if ($srcH >= $srcW) {
51                 $fdstH = $size;
52                 $fdstW = $fdstH * $srcW / $srcH;
53             } else {
54                 $fdstW = $size;
55                 $fdstH = $fdstW * $srcH / $srcW;
56             }
57         }
58         $ni = imagecreatetruecolor($fdstW, $fdstH);
59         //关闭 alpha 渲染并设置 alpha 标志
60         imagealphablending($ni, false);
61         imagesavealpha($ni, true);
62         //重采样拷贝部分图像并调整大小
63         imagecopyresampled($ni, $im, 0, 0, $srcX, $srcY, $fdstW, $fdstH, $srcW, $srcH);
64         switch ($data[2]){
65             case 1:
66                 imagegif($ni,$dstFile);
67                 break;
68             case 2:
69                 imagejpeg($ni,$dstFile,$quality);
70                 break;
71             case 3:
72                 imagepng($ni,$dstFile);
73                 break;
74         }
75         imagedestroy($im);
76         imagedestroy($ni);
77     }
78     return false;
79 }
80 
81 }
82 //$obj = new CImage();
83 //$res = $obj -> create_thumbnails(‘./old.jpg‘,‘./new.jpg‘);
84 //if($res) echo ‘成功生成缩略图‘;
85 //else echo ‘生成缩略图失败‘;

 

以上是关于PHP图片生成缩略图的主要内容,如果未能解决你的问题,请参考以下文章

生成缩略图的PHP上传图片类

PHP-生成缩略图和添加水印图-学习笔记

PHP-生成缩略图和添加水印图-学习笔记

php 生成缩略图

PHP生成缩略图--封装类

PHP压缩图片功能的介绍_php技巧 - PHP