PHP上传图片并生成缩略图的类

以前我写过一个PHP生成缩略图的函数,今天又写了一个集PHP上传图片,生成缩略图,同时上传并生成缩略图的类,希望能给你带来帮助。
在PHP上传图片并生成缩略图的类中,增加了上传文件路径的判断,并返回文件上传之后的详细路径,同时上传并生成缩略图的时候,文件的路径是以数组的形式返回的,请看代码演示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
class img {
	private $fileType;
 
	public function __construct(){
		$this->fileType=array("image/png"=>"png","image/jpeg"=>"jpg",
	"image/x-png"=>"png","image/pjpeg"=>"jpg","image/gif"=>"gif");//文件类型数组
	}
 
	public function upLoad($formName,$upLoadDir,$size){//图片上传方法
		//参数说说:表单文件域名字,上传路径,控制大小KB  是否生成小图
 
		if (!file_exists($upLoadDir)){
			echo("<script>alert('请确认图片上传路径是否存在再上传图片!');history.go(-1);</script>");
			exit();
		}
		if ($_FILES["$formName"]["size"]>$size*1000) {//判断 图片字节大小 
			echo("<script>alert('图片大小 不能超过".$size."KB');history.go(-1);</script>");
			exit();
		}
 
		$imgType=$_FILES["$formName"]["type"];//获取文件类型
		if (!array_key_exists($imgType,$this->fileType)){
			echo("<script>alert('图片类型不合法');history.go(-1);</script>");
			exit();
		}
 
		$filename=time();
 
		$imgDir=$upLoadDir.$filename.".".$this->fileType["$imgType"];
		if (move_uploaded_file($_FILES["$formName"]["tmp_name"],$imgDir)){
			return $imgDir;
		}else {
			echo("<script>alert('图片上传失败,请重试!');history.go(-1);</script>");
			exit();
		}	
	}
	//转载请注明出处:www.chhua.com
	public function smallPic($sourePic,$width,$heigh,$smallPicDir){//生成缩略图
		//参数说明 大图地址,生成宽度,高度, 缩略图存放路径
		if (!file_exists($sourePic)){
			echo("<script>alert('原始图片不存在,不能生成缩略图!');history.go(-1);</script>");
			exit();
		}
		if (!file_exists($smallPicDir)){
			echo("<script>alert('请确认指定缩略图路径是否存在!');history.go(-1);</script>");
			exit();
		}
		$BigImg=getimagesize($sourePic);//获取图像信息
		switch ($BigImg[2]){//判断图像类型
		 case 1:
		 	$image=imagecreatefromgif($sourePic);//从大图创建GIF图像
		 	break;
		 case 2:
		 	$image=imagecreatefromjpeg($sourePic);//从大图创建JPG图像
		 	break;
		 case 3:
		 	$image=imagecreatefrompng($sourePic);//从大图创建PNG图像
		 	break;		
		}
		$BigWidth=imagesx($image);//获取大图的宽度
		$BigHeigh=imagesx($image);//获取大图的高度
		$smallPic=imagecreatetruecolor($width,$heigh);//创建一个真彩色的小图
		$smallFileName=substr($sourePic,strrpos($sourePic,"/")+1,strlen($sourePic));//获取文件名
		$smallFileName=$smallPicDir.$smallFileName;//小图存放的完整路径
		imagecopyresized($smallPic,$image,0,0,0,0,$width,$heigh,$BigWidth,$BigHeigh);//从大图复制图像到小图
		imagejpeg($smallPic,$smallFileName);//输出小图到指定的小图路径
		return $smallFileName;//返回小图路径
	}
 
	public function upLoadAndToSmall($formname,$uploadDir,$size,$SmallWidth,$SmallHeigh,$SmallDir){
		//上传图片并生成缩略图,参数说明:表单名字,上传路径,限制大小KB,缩略图宽度,缩略图宽度,缩略图保存目录	
		$fileName=$this->upLoad($formname,$uploadDir,$size);//上传
		$pic["BigPIC"]=$fileName;
		$smallFileName=$this->smallPic($fileName,$SmallWidth,$SmallHeigh,$SmallDir);	//生成缩略图
		$pic["SmallPic"]=$smallFileName;
		return $pic;//返回大小图的路径数组
	}
}
?>

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP上传图片并生成缩略图的类 http://www.chhua.com/web-note1131

相关笔记

更多