0

0

php图片上传类_PHP教程

php中文网

php中文网

发布时间:2016-07-20 11:06:18

|

1039人浏览过

|

来源于php中文网

原创

class upload_class{
private $ptname;    //上传表单名称;
private $udname;    //是否以月份建立子目录(0为否,其他为真);
private $ufname;    //是否以php?name=%ca%b1%bc%e4">时间建立文件名(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->ulsizeptname['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($owerrorfun('背景图片太小!无法生成水印!');
   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;
}
}
?>


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445034.htmlTechArticleclass upload_class{ private $ptname; //上传表单名称; private $udname; //是否以月份建立子目录(0为否,其他为真); private $ufname; //是否以 时间 建立文件名...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号