博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的php图片上传类_php
阅读量:6085 次
发布时间:2019-06-20

本文共 3695 字,大约阅读时间需要 12 分钟。

hot3.png

某天突然做一个图片上传的功能,然后就萌发了写一个简单的php图片上传类的想法,呵呵,代码还有很多不足的地方,希望各位大侠批评指出。。

info_name = $file['name']; #1.jpg $this -> info_size = $file['size']; #13456 $this -> info_type = $file['type']; #image/jpeg $this -> info_tmp = $file['tmp_name']; #C:\Windows\Temp\php3CFC.tmp if($img_path != '') $this -> img_path = $img_path; /* 获取原始图像尺寸 */ $this -> info = getimagesize($this -> info_tmp); } } /* 检测和创建目录 */ public function auto_path(){ if($this -> is_fun_datefile){ /* 生成日期文件夹 */ $d = date('Ymd'); /* 生成日期文件夹 */ $this -> img_path = $this -> img_path .'/'. $d ; } if(!file_exists($this -> img_path)){ mkdir($this -> img_path); } } /* 判断文件类型 */ public function check_type(){ if(!in_array($this-> info_type, $this->img_type )){ $this -> set_msg(array(0, 'image type is not this.', '')); } } /* 判断图片大小 */ public function check_size(){ if($this -> info_size > $this -> img_size){ $this -> set_msg(array(0, 'image size is >' .$this -> img_size. '.', '')); } } /* 上传图片 */ public function start_upload_image(){ $img_sove_path = $this -> img_path .'/'. $this -> info_name; /* 自动重命名 */ if($this -> is_auto_sove){ $img_sove_path = $this -> img_path .'/'. date('YmdHis') . $this -> file_sign(); } /* 文件是否存在 */ $fi = file_exists($img_sove_path); if(!$fi || ($fi && $this -> is_cover)){ /* 上传文件 */ if(!move_uploaded_file($this -> info_tmp, $img_sove_path)){ $this -> set_msg(array(0, 'error', null)); }else{ $this -> set_msg(array(1, 'ok', 'date' => array( 'imageurl' => $img_sove_path, 'width' => $this -> info[0], 'height' =>$this -> info[1] ))); } } $this-> sove_new_name = $img_sove_path; } /* 水印 */ public function makewater(){ /* 获取上传完成的图片 */ $success_image = $this -> create(); $str = 'www.desetang.com'; /* 创建一个等宽的图像 */ $water_image = imagecreatetruecolor($this -> info[1], 40); $alpha = imagecolorallocatealpha($water_image, 255, 255, 255, 90); $color = imagecolorallocate($water_image, 255, 255, 0); imagefill($water_image, 0, 0, $alpha); imagettftext($water_image, 16, 4, 0, 40, $color, 'msyh.ttf', $str); imagecopy($success_image, $water_image, 0, $this -> info[1]-40, 0, 0, $this -> info[0], 40); /* 重新保存水印后的图片 */ $this -> copyimage($success_image); /* 释放缓存 */ imagedestroy($success_image); imagedestroy($water_image); } /* 输出后缀 */ private function file_sign(){ return strrchr($this -> info_name, '.'); } /* 创建/保存水印图片 */ private function create(){ switch($this -> info[2]){ case 1: # GIF image $timg = imagecreatefromgif($this-> sove_new_name); break; case 2: # JPEG image $timg = imagecreatefromjpeg($this-> sove_new_name); break; case 3: # PNG image $timg = imagecreatefrompng($this-> sove_new_name); break; } return $timg; } /* 输出/保存图片 */ private function copyimage($simage){ switch($this -> info[2]){ case 1: # GIF image imagegif($simage, $this-> sove_new_name); break; case 2: # JPEG image imagejpeg($simage, $this-> sove_new_name); break; case 3: # PNG image imagepng($simage, $this-> sove_new_name); break; } } /* 上传文件 */ public function save_image(){ /* 检测图片保存路径 */ $this -> auto_path(); /* 检测文件类型 */ $this -> check_type(); /* 检测图片大小 */ $this -> check_size(); /* 上传 */ $this -> start_upload_image(); /* 执行水印 */ if($this -> is_watermark) $this-> makewater(); return 1; } /* error */ public function set_msg($error){ /* 如果是错误则停止代码 */ if($error[0] == 0) exit(); }}?>

1.增加水印选项

2.功能还在完善。。。

 

转载于:https://my.oschina.net/desetang/blog/69319

你可能感兴趣的文章
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>
水平添加滚动条
查看>>
PHP中”单例模式“实例讲解
查看>>
VS2008查看dll导出函数
查看>>
VM EBS R12迁移,启动APTier . AutoConfig错误
查看>>
atitit.细节决定成败的适合情形与缺点
查看>>
Mysql利用binlog恢复数据
查看>>
我的友情链接
查看>>
用yum安装mariadb
查看>>
一点IT"边缘化"的人的思考
查看>>
WPF 降低.net framework到4.0
查看>>
搭建一个通用的脚手架
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>