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文件关系:
然后,结果展示: