2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > PHP 图片上传类 缩略图

PHP 图片上传类 缩略图

时间:2021-08-02 02:05:51

相关推荐

PHP 图片上传类 缩略图

为什么80%的码农都做不了架构师?>>>

<?PHP/*** 上传图片*/class imgUpload{static protected $a;protected $formName; //表单名称protected $directory; //文件上传至目录protected $maxSize;//最大文件上传大小protected $canUpload; //是否可以上传protected $doUpFile; //上传的文件名protected $sm_File;//缩略图名称private function __construct($_formName='file', $_directory='./images/uploads/', $_maxSize=1048576){ //1024*1024=1M//初始化参数$this->formName = $_formName;$this->directory = $_directory;$this->maxSize = $_maxSize;$this->canUpload = true;$this->doUpFile = '';$this->sm_File = '';}//判断图片是否属于允许格式内static public function Type($_formName='file'){$_type = $_FILES[$_formName]['type'];switch ($_type){case 'image/gif':if (self::$a==NULL)self::$a = new imgUpload($_formName);break;case 'image/pjpeg':if (self::$a==NULL)self::$a = new imgUpload($_formName);break;case 'image/x-png':if (self::$a==NULL)self::$a = new imgUpload($_formName);break;default:self::$a = false;}return self::$a;}//获取文件大小public function getSize($_format='K'){if ($this->canUpload) {if (0 == $_FILES[$this->formName]['size']) {$this->canUpload = false;return $this->canUpload;break;}switch ($_format){case 'B':return $_FILES[$this->formName]['size'];break;case 'K':return round($_FILES[$this->formName]['size'] / 1024);break;case 'M':return round($_FILES[$this->formName]['size'] / (1024*1024),2);break;}} }//获取文件类型public function getExt(){if ($this->canUpload) {$_name = $_FILES[$this->formName]['name'];$_nameArr = explode('.',$_name);$_count = count($_nameArr)-1;}return $_nameArr[$_count];}//获取文件名称public function getName(){if ($this->canUpload) {return $_FILES[$this->formName]['name'];}}//新建文件名public function newName(){return date('YmdHis').rand(0,9);}//上传文件public function upload(){if ($this->canUpload){$_getSize = $this->getSize('B');if (!$_getSize){return $_getSize;break;}else{$_newName = $this->newName();$_ext = $this->getExt();$_doUpload = move_uploaded_file($_FILES[$this->formName]['tmp_name'], $this->directory.$_newName.".".$_ext);if ($_doUpload){$this->doUpFile = $_newName;}return $_doUpload;}}}//创建缩略图public function thumb($_dstChar='_m', $_max_len=320){//$_dstChar:_m , _sif ($this->canUpload && $this->doUpFile != "") {$_ext = $this->getExt();$_srcImage = $this->directory.$this->doUpFile.".".$_ext;//得到图片信息数组$_date = getimagesize($_srcImage, &$info);$src_w = $_date[0]; //源图片宽$src_h = $_date[1]; //源图片高$src_max_len = max($src_w, $src_h);//求得长边$src_min_len = min($src_w, $src_h);//求得短边$dst_w = '';//目标图片宽$dst_h = '';//目标图片高//宽高按比例缩放,最长边不大于$_max_lenif ($src_max_len>$_max_len){$percent = $src_min_len / $src_max_len;if ($src_w == $src_max_len){$dst_w = $_max_len;$dst_h = $percent * $dst_w;}else{$dst_h = $_max_len;$dst_w = $percent * $dst_h;}}else{$dst_w = $src_w;$dst_h = $src_h;}//建立缩略图时,源图片的位置$src_x = '';$src_y = '';//判断如果缩略图用于logo,将对其进行裁减if ('s_' == $_dstChar) {$src_x = $src_w * 0.10;$src_y = $src_h * 0.10;$src_w *= 0.8;$src_h *= 0.8;}//判断图片类型并创建对应新图片switch ($_date[2]){case 1:$src_im = imagecreatefromgif($_srcImage);break;case 2:$src_im = imagecreatefromjpeg($_srcImage);break;case 3:$src_im = imagecreatefrompng($_srcImage);break;case 8:$src_im = imagecreatefromwbmp($_srcImage);break;}//创建一幅新图像if ($_date[2]==1) {//gif无法应用imagecreatetruecolor$dst_im = imagecreate($dst_w, $dst_h);}else {$dst_im = imagecreatetruecolor($dst_w, $dst_h);}//对这副图像进行缩略图copy// $bg = imagecolorallocate($dst_im,255,255,0);imagecopyresized($dst_im,$src_im, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );//对图片进行抗锯齿操作imageantialias($dst_im, true);switch ($_date[2]) {case 1:$cr = imagegif($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);break;case 2:$cr = imagejpeg($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);break;case 3://imagepng有问题,所以在这里用imagejpg代替$cr = imagejpeg($dst_im, $this->directory.$this->doUpFile.$_dstChar.".".$_ext, 100);break;}// $cr = imagejpeg($dst_im, $this->directory.$_dstChar.$this->doUpFile, 90);if ($cr) {$this->sm_File = $this->directory.$this->doUpFile.$_dstChar.".".$_ext;return $this->sm_File;}else {return false;}}imagedestroy($dst_im);imagedestroy($cr);}//得到上传后的文件名public function getUpFile(){if ($this->doUpFile!='') {$_ext = $this->getExt();return $this->doUpFile.".".$_ext;}else {return false;}}//得到上传后的文件全路径public function getFilePatch(){if ($this->doUpFile!='') {$_ext = $this->getExt();return $this->directory.$this->doUpFile.".".$_ext;}else {return false;}}//得到缩略图文件全路径public function getThumb(){if ($this->sm_File!='') {return $this->sm_File;}else {return false;}}//得到上传文件的路径public function getDirectory(){if ($this->directory!='') {return $this->directory;}else {return false;}}}?>

无忧主机,PHP空间

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。