<?php
//缩略图类
class Thumb{
public static $thumb_prefix = '';//缩略图前缀
public static $thumb_savePath = '';//缩略图保存路径
public static $thumb_width = '';//缩略图宽度
public static $thumb_height = '';//缩略图高度
public static function save($sPath){//保存为缩略图,传入一个实参
$imgArr = self::getImageInfo($sPath);//获取图片信息
if (is_array($imgArr)) {
//将三个静态属性以逗号为分隔拆分为数组,实现多张缩略图的生成
$thumb_prefix_arr = explode(',', self::$thumb_prefix);
$thumb_width_arr = explode(',', self::$thumb_width);
$thumb_height_arr = explode(',', self::$thumb_height);
$countP = count($thumb_prefix_arr);
$countW = count($thumb_width_arr);
$countH = count($thumb_height_arr);
if ($countP>0 && $countP==$countW && $countW==$countH) {
//遍历一个数组,生成多张缩略图
$reArr = array();
foreach ($thumb_prefix_arr as $key=>$value){
//生成空白画布并填充颜色
$image = imagecreatetruecolor($thumb_width_arr[$key], $thumb_height_arr[$key]);
$color = imagecolorallocate($image, 255, 255, 255);//白色
imagefill($image, 0, 0, $color);
//计算出缩略比例
$width_scale = $imgArr['width']/$thumb_width_arr[$key];//宽比
$height_scale = $imgArr["height"]/$thumb_height_arr[$key];//高比
$scale = $width_scale>$height_scale ? $width_scale : $height_scale;
//计算缩略图宽高
$width = $imgArr["width"]/$scale;
$height = $imgArr["height"]/$scale;
//到目标图片的位置
$dst_x = ($thumb_width_arr[$key]-$width)/2;
$dst_y = ($thumb_height_arr[$key]-$height)/2;
//获取原始图片资源并拷贝
$src_image = $imgArr["createFunName"]($sPath);//获取原始图片资源
imagecopyresized($image, $src_image, $dst_x, $dst_y, 0, 0, $width, $height, $imgArr["width"], $imgArr["height"]);
//保存并返回值
$re = $imgArr['saveFunName']($image,self::$thumb_savePath.'/'.$thumb_prefix_arr[$key].$imgArr['name']);
$reArr[$key] = $re;
}
//销毁缩略图资源及原图片资源,释放内存
imagedestroy($image);
imagedestroy($src_image);
return $reArr;//返回数组
}else{
return false;
}
}else{
return false;
}
}
protected static function getImageInfo($path){
if (is_file($path)) {
$imgArr = getimagesize($path);
if (is_array($imgArr)) {//如果$imgArr是一个数组,则说明$path是一个真实图片
//判断不同的图片类型,使用变量函数,生成图片资源:$createFunName,保存图片资源:$saveFunName
switch ($imgArr['mime']){
case 'image/jpeg':
case 'image/pjpeg':
$createFunName = 'imagecreatefromjpeg';
$saveFunName = 'imagejpeg';
break;
case 'image/png':
$createFunName = 'imagecreatefrompng';
$saveFunName = 'imagepng';
break;
case 'image/gif':
$createFunName = 'imagecreatefromgif';
$saveFunName = 'imagegif';
break;
default:
return false;
}
//获取原图片名称
$oldName = pathinfo($path,PATHINFO_BASENAME);
//返回图片信息数组
return array(
'name'=>$oldName,
'type'=>$imgArr['mime'],
'width'=>$imgArr[0],
'height'=>$imgArr[1],
'createFunName'=>$createFunName,
'saveFunName'=>$saveFunName
);
}
}else{
return false;
}
}
}
转载于:https://my.oschina.net/u/2484959/blog/515962