首页 > 代码库 > 封装好的图像缩放函数

封装好的图像缩放函数

/**
 * 对上传的图片进行缩放
 * @param 原始文件 $srcFile
 * @param 缩放比例 $percent
 */
function scale($src,$percent){
	//原始图像文件类型,或者用getimage函数获取
// 	$src="http://www.mamicode.com/1.jpg";
// 	$ext=end(explode(".", $src));//也可以使用扩展名来进行判断
//第一步,得到上传图片相关信息
	//原图宽,高
	$array=getimagesize($src);
//print_r($array);exit;
	$src_w=$array[0];
	$src_h=$array[1];
	//图片类型值
	$typeId=$array[2];
// 	echo $typeId;exit;
	switch($typeId){
		case 1:
			$ext="gif";
			break;
		case 2:
			$ext="jpg";
			break;
		case 3:
			$ext="png";
			break;
		default:
			echo "图片格式不正确,请重新上传!";
			exit;
	}
	
	//缩放后的图像文件存放值,用随机数和当前的时间戳来命名,防止重复
	$dstFile=rand(100, 999).time().".".$ext; //新图片的文件名,其它地方就可以调用了
// 	echo $dstFile;exit;

	//缩放比例系数
	$percent=0.3;
	//新图宽高,根据缩放比例不同,也许会出现小数位的尺寸,用ceil(进一取整)或者floor(舍一取整)
	$dst_w=ceil($src_w*$percent);
	$dst_h=ceil($src_h*$percent);
	//创建承载新图的画布
	$dst_image=imagecreatetruecolor($dst_w, $dst_h);
	
	//载入原图,根据上传图片的类型使用对应的函数
	switch($ext){
		case "gif":
			$src_image=imagecreatefromgif($src);
			break;
		case "jpg":
			$src_image=imagecreatefromjpeg($src);
			break;
		case "png":
			$src_image=imagecreatefrompng($src);
			break;
		default:exit;
	}

	//进行缩放
	imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
	
	//同上,输出图像到路径
	switch($ext){
		case "gif":
			imagegif($dst_image,$dstFile);
			break;
		case "jpg":
			imagejpeg($dst_image,$dstFile);
			break;
		case "png":
			imagepng($dst_image,$dstFile);
			break;
		default:exit;
	}

	//销毁内存中的残留
	imagedestroy($src_image);
	imagedestroy($dst_image);
}
//测试
$srcFile="1.jpg";
$per="0.3";
scale($srcFile,$per);


*****保留注释内容以便需要的人能完全理解******


本文出自 “方向感” 博客,请务必保留此出处http://itech.blog.51cto.com/192113/1574091

封装好的图像缩放函数