VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php 图片上传代码,具有生成缩略图与增加水印功能

这款图片上传源代码是一款可以上传图片并且还具有给上传的图片生成缩略图与增加水印功能,可以说是一款完美的图片上传类,实例代码如下:

  1.  
  2.  
  3. class upfile { 
  4.  public $filepath = "www.phpfensi.com/"//上传文件存放文件夹 
  5.  
  6.  public $filesize = 1000000; //允许上传的大小 
  7.  
  8.  //如果要修改允许上传文件的类型  请搜索 【 switch ($upfiletype) { //文件类型  】 
  9.  
  10.  public $reimagesize = array ( 
  11.   true, //是否生成缩略图 
  12.   400, //缩略图宽 
  13.   300,//缩略图高 
  14.   "" //缩略图存放文件夹 如果为空和当前要生成缩略图的文件在同一目录 文件前缀r_ 
  15.  ); //是否生成缩略图 array(生成或不生成,缩略图宽,缩略图高,存放文件夹); 注意:存放文件夹后跟 '/' 
  16.  
  17.  public $india = true; //是否打水印 true打 false不打 
  18.  
  19.  public $indiaimage = ""//水印图片地址为空则不打图片水印 如果有文字水印建议不要开启图片水印 
  20.  
  21.  public $indiaimagex = 100; //图片距离图片左边距离 
  22.  
  23.  public $indiaimagey = 10; //图片距离图片上面距离 
  24.  
  25.  public $indiatext = "www.phpfensi.com"//水印文字 
  26.  
  27.  public $fontsize = 6; //水印文字大小,1最小6最大 
  28.  
  29.  public $indiatextx = 10; //文字距离图片左边距离 
  30.  
  31.  public $indiatexty = 10; //文字距离图片上面距离 
  32.  
  33.  public $r = 250; //图片颜色三原色 $r红 
  34.  
  35.  public $g = 250; //$g绿 
  36.  
  37.  public $b = 250; //$b蓝 
  38.  
  39.  public $indiapath = ""//加了水印的图片保存路径,如果为空就直接替代原来的图片 
  40.  
  41.  //开始上传处理 
  42.  function uploadfile($upfile) { 
  43.   if ($upfile == "") { 
  44.    die("uploadfile:参数不足"); 
  45.   } 
  46.   if (!file_exists($this->filepath)) { 
  47.    mkdir($this->filepath); 
  48.   } 
  49.   $upfiletype = $upfile['type']; 
  50.   $upfilesize = $upfile['size']; 
  51.   $upfiletmpname = $upfile['tmp_name']; 
  52.   $upfilename = $upfile['name']; 
  53.   $upfileerror = $upfile['error']; 
  54.   if ($upfilesize > $this->filesize) { 
  55.    return false; //文件过大 
  56.   } 
  57.   switch ($upfiletype) { //文件类型 
  58.    case 'image/jpeg' : 
  59.     $type = 'jpg'
  60.     break
  61.    case 'image/pjpeg' : 
  62.     $type = 'jpg'
  63.     break
  64.    case 'image/png' : 
  65.     $type = 'png'
  66.     break
  67.    case 'image/gif' : 
  68.     $type = 'gif'
  69.     break
  70.   } 
  71.   if (!isset ($type)) { 
  72.    return false; //不支持此类型 
  73.   } 
  74.   if (!is_uploaded_file($upfiletmpnameor !is_file($upfiletmpname)) { 
  75.    return false; 
  76.    ; //文件不是经过正规上传的; 
  77.   } 
  78.   if ($this->upfileerror != 0) { 
  79.    return false; //其他错误 
  80.   } 
  81.   if ($this->upfileerror == 0) { 
  82.    if (!file_exists($upfiletmpname)) { 
  83.     return false; //临时文件不存在 
  84.    } else { 
  85.     $filename = date("ymdhis", time() + 3600 * 8); //图片已当前时间命名 
  86.     $filename = $this->filepath . $filename . "." . $type
  87.     if (!move_uploaded_file($upfiletmpname$filename)) { 
  88.      return false; //文件在移动中丢失 
  89.     } else { 
  90.      if ($this->india == true) { 
  91.       $this->goindia($filename$type,true); 
  92.      } else { 
  93.       if ($this->reimagesize[0] == true) { 
  94.        $this->goreimagesize($filename$type); 
  95.       } else { 
  96.        return true; //上传成功! 
  97.        unlink($upfiletmpname); 
  98.       } 
  99.      } 
  100.     } 
  101.  
  102.    } 
  103.   } 
  104.  
  105.  } 
  106.  //添加水印处理 
  107.  function goindia($filename$filetype,$reimage=false) { 
  108.   if (!file_exists($filename)) { 
  109.    $this->reerror(7); //要添加水印的文件不存在 
  110.   } else { 
  111.    if ($filetype == "jpg") { 
  112.     $im = imagecreatefromjpeg($filename); 
  113.    } else 
  114.     if ($filetype == "gif") { 
  115.      $im = imagecreatefromgif($filename); 
  116.     } else 
  117.      if ($filetype == "png") { 
  118.       $im = imagecreatefrompng($filename); 
  119.      } 
  120.    if ($this->indiatext != "") { //如果水印文字不为空 
  121.     $textcolor = imagecolorallocate($im$this->r, $this->g, $this->b); //设置文字颜色 
  122.     imagestring($im$this->fontsize, $this->indiatextx, $this->indiatexty, $this->indiatext, $textcolor); //将文字写入图片 
  123.    } 
  124.    if ($this->indiaimage != "") {//如果水印图片不为空 
  125.     $indiaimagetype = getimagesize($this->indiaimage); 
  126.     $logow = $indiaimagetype[0]; //得到水印图片的宽 
  127.     $logoh = $indiaimagetype[1]; //得到水印图片的高 
  128.     switch ($indiaimagetype[2]) { //判断水印图片的格式 
  129.      case 1 : 
  130.       $indiaimagetype = "gif"
  131.       $logo = imagecreatefromgif($this->indiaimage); 
  132.       break
  133.      case 2 : 
  134.       $indiaimagetype = "jpg"
  135.       $logo = imagecreatefromjpeg($this->indiaimage); 
  136.       break
  137.      case 3 : 
  138.       $indiaimagetype = "png"
  139.       $logo = imagecreatefrompng($this->indiaimage); 
  140.       break
  141.     } 
  142.     imagealphablending($im, true); //打开混色模式 
  143.     imagecopy($im$logo$this->indiaimagex, $this->indiaimagey, 0, 0, $logow$logoh); 
  144.     imagedestroy($im); 
  145.     imagedestroy($logo); 
  146.    } 
  147.   } 
  148.   if ($this->indiapath == "") { //如果水印存放地址不为空 
  149.    if ($filetype == "jpg") { 
  150.     imagejpeg($im$filename); 
  151.    } else 
  152.     if ($filetype == "gif") { 
  153.      imagegif($im$filename); 
  154.     } else 
  155.      if ($filetype == "png") { 
  156.       imagepng($im$filename); 
  157.      } 
  158.    if($reimage == true){ 
  159.     $this->goreimagesize($filename,$filetype); 
  160.    }else
  161.     return true; //添加水印成功 
  162.    } 
  163.   } else { 
  164.    if (!file_exists($this->indiapath)) { 
  165.     mkdir($this->indiapath); 
  166.     return false; //请重新上传 
  167.    } else { 
  168.     $indianame = basename($filename); 
  169.     $indianame = $this->indiapath . $indianame
  170.     if ($filetype == "jpg") { 
  171.      imagejpeg($im$indianame); 
  172.     } else 
  173.      if ($filetype == "gif") { 
  174.       imagegif($im$indianame); 
  175.      } else 
  176.       if ($filetype == "png") { 
  177.        imagepng($im$indianame); 
  178.       } 
  179.     if($reimage == true){ 
  180.      $this->goreimagesize($indianame,$filetype); 
  181.      echo $indianame
  182.     }else
  183.      return true; //添加水印成功 
  184.     } 
  185.    } 
  186.   } 
  187.  } 
  188.  function goreimagesize($filename$filetype) { 
  189.   if (!file_exists($filename)) { 
  190.    return false; //要生成缩略图的图片不存在 
  191.   } else { 
  192.    if ($filetype == 'jpg') { 
  193.     $reimage = imagecreatefromjpeg($filename); 
  194.    } 
  195.    elseif ($filetype == 'png') { 
  196.     $reimage = imagecreatefrompng($filename); 
  197.    } else 
  198.     if ($filetype == 'gif') { 
  199.      $reimage = imagecreatefromgif($filename); 
  200.     } 
  201.    if (isset ($reimage)) { 
  202.     $srcimagetype = getimagesize($filename); 
  203.     $srcimagetypew = $srcimagetype[0]; //得到原始图片宽度 
  204.     $srcimagetypeh = $srcimagetype[1]; //得到原始图片高度 
  205.     $reim = imagecreatetruecolor($this->reimagesize[1], $this->reimagesize[2]); 
  206.     imagecopyresized($reim$reimage, 0, 0, 0, 0, $this->reimagesize[1], $this->reimagesize[2], $srcimagetypew$srcimagetypeh); 
  207.     $reimagepath = $this->reimagesize[3]; 
  208.     if ($reimagepath != "") { //如果存放水印地址不为空 
  209.      if (!file_exists($reimagepath)) { 
  210.       mkdir($reimagepath); 
  211.      } else { 
  212.       $reimagename = basename($filename); 
  213.       $reimagename = $reimagepath . "r_" . $reimagename
  214.       if ($filetype == "gif"
  215.        imagegif($reim$reimagename); 
  216.       else 
  217.        if ($filetype == "jpg"
  218.         imagejpeg($reim$reimagename); 
  219.        else 
  220.         if ($filetype == "png"
  221.          imagepng($reim$reimagename); 
  222.       return true; 
  223.      } 
  224.     } else { 
  225.      $filename = basename($filename); 
  226.      if($this->indiapath == ""){ 
  227.       $filename = $this->filepath."r_" . $filename
  228.      }else
  229.       $filename = $this->indiapath."r_" . $filename
  230.      } 
  231.      if ($filetype == "gif"
  232.       imagegif($reim$filename); 
  233.      else 
  234.       if ($filetype == "jpg"
  235.        imagejpeg($reim$filename); 
  236.       else 
  237.        if ($filetype == "png"
  238.         imagepng($reim$filename); 
  239.      return true; 
  240.     } 
  241.  
  242.    } 
  243.   } 
  244.  } 
  245.  
  246. if ($_post["submit"]) { 
  247.  $file = $_files['uploadfile']; 
  248.  $upfile = new upfile(); 
  249.  echo $upfile->uploadfile($file); 
  250. }//开源代码phpfensi.com 
  251. ?> 
  252.   "" method="post" enctype="multipart/form-data"
  253.   "file" name="uploadfile"/>
     
  254.   "submit" value="上传" name="submit"/> 
  255.    
  256.  

原文链接:http://www.phpfensi.com/php/20140819/4488.html


相关教程