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图片生成缩略图的主要内容,如果未能解决你的问题,请参考以下文章