热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php图片上传类

classupload_class{private$ptname;  上传表单名称;private$udname;  

class upload_class{
private $ptname;    //上传表单名称;
private $udname;    //是否以月份建立子目录(0为否,其他为真);
private $ufname;    //是否以时间建立文件名(0为否,其他为真);
private $ultype;    //上传文件类型;
private $ulsize;    //上传文件大小;
private $ulname;    //输出文件名称;
private $ulpath;    //输出文件路径;
private $wm;     //水印附加(0为不加,其他为加);
private $wmtype;    //水印类型(0为文字,其他为图片);
private $wmpic;     //水印图片;
private $wmpicquality;   //图片质量;
private $wmpictrans;   //图片透明;
private $wmstr;     //水印字符;
private $wmstrsize;    //字符大小;
private $wmstrfont;    //字符字体;
private $wmstrcolor;   //字符颜色;
private $wmpos;     //水印位置(1为顶端居左,2为顶端居中,3为顶端居右……);
function __construct($ptname=upfile,$udname=1,$ufname=1,$ultype=array(image/jpg,image/jpeg,image/png,image/pjpeg,image/gif,image/bmp,image/x-png),$wm=1,$wmtype=1,$wmpic=images/wm.gif,$ulsize=2097152,$ulpath=images/temp/,$wmpictrans=20,$wmpicquality=80,$wmstr=DONLINE,$wmstrsize=5,$wmstrfOnt=./font/cour.ttf,$wmstrcolor=#ff0000,$wmpos=9){
  $this->ptname=$_FILES[$ptname];
  $this->udname=$udname;
  $this->ufname=$ufname;
  $this->ultype=$ultype;
  $this->ulsize=$ulsize;
  $this->ulpath=$ulpath;
  $this->wm=$wm;
  $this->wmtype=$wmtype;
  $this->wmpic=$wmpic;
  $this->wmpicquality=$wmpicquality;
  $this->wmpictrans=$wmpictrans;
  $this->wmstr=$wmstr;
  $this->wmstrsize=$wmstrsize;
  $this->wmstrfOnt=$wmstrfont;
  $this->wmstrcolor=$wmstrcolor;
  $this->wmpos=$wmpos;
}
function uploadfun(){
  if($_SERVER[REQUEST_METHOD]==POST){
   if(!is_uploaded_file($this->ptname[tmp_name]))$this->errorfun(上传失败!);
   if(!in_array($this->ptname[type],$this->ultype))$this->errorfun(不支持的文件类型!);
   if($this->ulsize<$this->ptname[size])$this->errorfun(文件太大!);
   if($this->udname){date_default_timezone_set(UTC);$this->ulpath=$this->ulpath.month_.date(Ym)./;}
   else{$this->ulpath=$this->ulpath;}
   $this->createfun($this->ulpath);
   if($this->ufname){$t=pathinfo($this->ptname[name]);$this->ulname=$this->ulpath.time()...$t[extension];}
   else{$this->ulname=$this->ulpath.$this->ptname[name];}
   if(file_exists($this->ulname))$this->errorfun(该文件已存在!);
   if(!move_uploaded_file($this->ptname[tmp_name],$this->ulname))$this->errorfun(移动文件错误!);
   $this->wmfun();
   $this->errorfun(上传成功!);
  }
}
function createfun($d){
  if(!file_exists($d)){$this->createfun(dirname($d));mkdir($d);}
}
function wmfun(){
  if($this->wm){
   if(file_exists($this->ulname)){
    $groundimg=getimagesize($this->ulname);
    $ow=$groundimg[0];
    $oh=$groundimg[1];
    switch($groundimg[2]){
     case 1:$g=imagecreatefromgif($this->ulname);break;
     case 2:$g=imagecreatefromjpeg($this->ulname);break;
     case 3:$g=imagecreatefrompng($this->ulname);break;
     case 4:$g=imagecreatefromwbmp($this->ulname);break;
     default:$this->errorfun(不支持的背景图片类型!);
    }
   }
   else{$this->errorfun(背景图片不存在!);}
   if(file_exists($this->wmpic)){
    $wmimg=getimagesize($this->wmpic);
    $ww=$wmimg[0];
    $wh=$wmimg[1];
    switch($wmimg[2]){
     case 1:$w=imagecreatefromgif($this->wmpic);break;
     case 2:$w=imagecreatefromjpeg($this->wmpic);break;
     case 3:$w=imagecreatefrompng($this->wmpic);break;
     case 4:$w=imagecreatefromwbmp($this->wmpic);break;
     default:$this->errorfun(不支持的水印图片类型!);
    }
   }
   else{$this->errorfun(水印图片不存在!);}
   switch($this->wmtype){
    case 0:$tp=imagettfbbox(ceil($this->wmstrsize*2.5),0,$this->wmstrfont,$this->wmstr);$ww=$tp[2]-$tp[6];$wh=$tp[3]-$tp[7];unset($tp);break;
    case 1:$ww=$ww;$wh=$wh;break;
    default:$ww=$ww;$wh=$wh;break;
   }
   if($ow<$ww || $oh<$wh)$this->errorfun(背景图片太小!无法生成水印!);
   switch($this->wmpos){  
    case 0:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh));break;//随机
          case 1:$x=0;$y=0;break;//1为顶端居左     
          case 2:$x=($ow-$ww)/2;$y=0;break;//2为顶端居中     
          case 3:$x=$ow-$ww;$y=0;break;//3为顶端居右     
          case 4:$x=0;$y=($oh-$wh)/2;break;//4为中部居左     
          case 5:$x=($ow-$ww)/2;$y=($oh-$wh)/2;break;//5为中部居中   
          case 6:$x=$ow-$ww;$y=($oh-$wh)/2;break;//6为中部居右     
          case 7:$x=0;$y=$oh-$wh;break;//7为底端居左  
          case 8:$x=($ow-$ww)/2;$y=$oh-$wh;break;//8为底端居中     
          case 9:$x=$ow-$ww;$y=$oh-$wh;break;//9为底端居右     
          default:$x=rand(0,($ow-$ww));$y=rand(0,($oh-$wh));break;//随机         
      }
   imagealphablending($g, true);
   switch($this->wmtype){
    case 0:
    if($this->wmstrcolor){$R=hexdec(substr($this->wmstrcolor,1,2));$G=hexdec(substr($this->wmstrcolor,3,2));$B=hexdec(substr($this->wmstrcolor,5));}
    else{$this->errorfun(水印文字颜色不存在!);}
    imagestring($g,$this->wmstrfont,$x,$y,$this->wmstr,imagecolorallocate($g,$R,$G,$B));break;
    case 1;imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this->wmpictrans);break;
    default:imagecopymerge($g,$w,$x,$y,0,0,$ww,$wh,$this->wmpictrans);break;
   }
   @unlink($this->ulname);
   switch($groundimg[2]){
          case 1:imagegif($g,$this->ulname);break;
          case 2:imagejpeg($g,$this->ulname,$this->wmpicquality);break;
          case 3:imagepng($g,$this->ulname);break;
    case 4:imagewbmp($g,$this->ulname);break;
          default:$this->errorfun(生成图片失败!);
   }
   if(isset($wmimg))unset($wmimg);
      if(isset($w))imagedestroy($w);
      unset($groundimg);
      imagedestroy($g);
  }
}
function errorfun($e=未知错误!){
  $msg=;
  echo $msg;
  exit;
}
}
?>


教程地址:

欢迎转载!但请带上文章地址^^


推荐阅读
  • Java导入Excel文件返回数据对应属性类字段,Java导出Excel文件如何让数据对应指定的标题字段
    Java导入Excel文件如何对应属性类对应的字段?Java导出Excel文件如何实现?下面分为两段供各位测试,要是不懂或者实在不行可以评论一下,看到我会回复的jar这些你们可以自 ... [详细]
  • UEditor可以如何直接复制word的图文内容到编辑器中
    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)j ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
  • 在应用系统开发当中,文件的上传和下载是非常普遍的需求。在基于.NET的CS架构的项目开发当中,有多种方案可以实现文件的上传和下载(httpwebrequest、webclient等),而且多采用异步 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
author-avatar
岚氵的幽岚1980
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有