Heim  >  Artikel  >  Backend-Entwicklung  >  PHP缩略图类

PHP缩略图类

WBOY
WBOYOriginal
2016-06-23 13:24:59880Durchsuche

<?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;		}	}}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn