PHP圖片生成縮略圖

代碼: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 '生成縮略圖失敗';
相關文章
相關標籤/搜索