加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP图片批量上传代码

发布时间:2022-01-17 05:41:56 所属栏目:PHP教程 来源:互联网
导读:?php /* * 名称:PHP单页面图片批量上传管理系统 by zozi * 功能:批量上传图片,自动读取目录,批量删除图片,自动获得图片地址, * 生成复制连接,支持图片水印 (水印支持图片或文字) * 水印参数: * $groundImage 背景图片,即需要加水印的图片,暂只支
  <?php
  /*
  * 名称:PHP单页面图片批量上传管理系统 by zozi
  * 功能:批量上传图片,自动读取目录,批量删除图片,自动获得图片地址,
  *       生成复制连接,支持图片水印 (水印支持图片或文字)
  * 水印参数:
  *      $groundImage    背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
  *      $waterPos        水印位置,有10种状态,0为随机位置;
  *                        1为顶端居左,2为顶端居中,3为顶端居右;
  *                        4为中部居左,5为中部居中,6为中部居右;
  *                        7为底端居左,8为底端居中,9为底端居右;
  *      $waterImage        图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
  *      $waterText        文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
  *      $textFont        文字大小,值为1、2、3、4或5,默认为5;
  *      $textColor        文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
  *
  * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG
  *      $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
  *      当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
  *      加水印后的图片的文件名和 $groundImage 一样。
  */
  ?>
 
  <?php
  $zpass='123456';               //登陆密码
  $zurl='www.mycodes.net';         //使用地址
  $zname='upimage.php';          //本页面名称
  function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=5,$textColor="#FF0000")
  {
      $isWaterImage = FALSE;
      $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";
 
      //读取水印文件
      if(!empty($waterImage) && file_exists($waterImage))
      {
          $isWaterImage = TRUE;
          $water_info = getimagesize($waterImage);
          $water_w    = $water_info[0];//取得水印图片的宽
          $water_h    = $water_info[1];//取得水印图片的高
 
          switch($water_info[2])//取得水印图片的格式
          {
              case 1:$water_im = imagecreatefromgif($waterImage);break;
              case 2:$water_im = imagecreatefromjpeg($waterImage);break;
              case 3:$water_im = imagecreatefrompng($waterImage);break;
              default:die($formatMsg);
          }
      }
 
      //读取背景图片
      if(!empty($groundImage) && file_exists($groundImage))
      {
          $ground_info = getimagesize($groundImage);
          $ground_w    = $ground_info[0];//取得背景图片的宽
          $ground_h    = $ground_info[1];//取得背景图片的高
 
          switch($ground_info[2])//取得背景图片的格式
          {
              case 1:$ground_im = imagecreatefromgif($groundImage);break;
              case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
              case 3:$ground_im = imagecreatefrompng($groundImage);break;
              default:die($formatMsg);
          }
      }
      else
      {
          die("需要加水印的图片不存在!");
      }
 
      //水印位置
      if($isWaterImage)//图片水印
      {
          $w = $water_w;
          $h = $water_h;
          $label = "图片的";
      }
      else//文字水印
      {
          $temp = imagettfbbox(ceil($textFont*2.5),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围
          $w = $temp[2] - $temp[6];
          $h = $temp[3] - $temp[7];
          unset($temp);
          $label = "文字区域";
      }
      if( ($ground_w<$w) || ($ground_h<$h) )
      {
          echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!";
          return;
      }
      switch($waterPos)
      {
          case 0://随机
              $posX = rand(0,($ground_w - $w));
              $posY = rand(0,($ground_h - $h));
              break;
          case 1://1为顶端居左
              $posX = 0;
              $posY = 0;
              break;
          case 2://2为顶端居中
              $posX = ($ground_w - $w) / 2;
              $posY = 0;
              break;
          case 3://3为顶端居右
              $posX = $ground_w - $w;
              $posY = 0;
              break;
          case 4://4为中部居左
              $posX = 0;
              $posY = ($ground_h - $h) / 2;
              break;
          case 5://5为中部居中
              $posX = ($ground_w - $w) / 2;
              $posY = ($ground_h - $h) / 2;
              break;
          case 6://6为中部居右
              $posX = $ground_w - $w;
              $posY = ($ground_h - $h) / 2;
              break;
          case 7://7为底端居左
              $posX = 0;
              $posY = $ground_h - $h;
              break;
          case 8://8为底端居中
              $posX = ($ground_w - $w) / 2;
              $posY = $ground_h - $h;
              break;
          case 9://9为底端居右
              $posX = $ground_w - $w-6;
              $posY = $ground_h - $h-6;
              break;
          default://随机
              $posX = rand(0,($ground_w - $w));
              $posY = rand(0,($ground_h - $h));
              break;    
      }
 
      //设定图像的混色模式
      imagealphablending($ground_im, true);
 
      if($isWaterImage)//图片水印
      {
          imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件        
      }
      else//文字水印
      {
          if( !empty($textColor) && (strlen($textColor)==7) )
          {
              $R = hexdec(substr($textColor,1,2));
              $G = hexdec(substr($textColor,3,2));
              $B = hexdec(substr($textColor,5));
          }
          else
          {
              die("水印文字颜色格式不正确!");
          }
          imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));        
      }
 
      //生成水印后的图片
      @unlink($groundImage);
      switch($ground_info[2])//取得背景图片的格式
      {
          case 1:imagegif($ground_im,$groundImage);break;
          case 2:imagejpeg($ground_im,$groundImage);break;
          case 3:imagepng($ground_im,$groundImage);break;
          default:die($errorMsg);
      }
 
      //释放内存
      if(isset($water_info)) unset($water_info);
      if(isset($water_im)) imagedestroy($water_im);
      unset($ground_info);
      imagedestroy($ground_im);
  }
  ?>
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  <title>图片上传</title>
  <style type="text/css">
  <!--
  body, table {
  font-family: "宋体";
  font-size: 14px;
  padding:0px;
  margin:0px;
  }
  -->
  </style>
  </head>
  <body>
  <table width="760" border="0" align="center">
  <tr>
      <td>
  <?php
  //当前时间
  $nowtime=time();
  $baseurl= $_SERVER['PHP_SELF'] ? dirname($_SERVER['PHP_SELF']) : dirname($_SERVER['SCRIPT_NAME']);
  $baseurl='http://'.$_SERVER['HTTP_HOST'].$baseurl;
  //检查是否有提交图片
  if(!empty($_FILES['attachfile']['name'])){
  //处理每个图片
  foreach($_FILES['attachfile']['name'] as $k=>$v){
     //图片名字不为空
     if(!empty($v)){
      //后缀必须是图片名
      if(eregi("/.(gif|jpg|jpeg|png|bmp)$",$v)){
       //图片不能大于8M
       if($_FILES['attachfile']['size'][$k] > 8388608) jieqi_delfile($_FILES['attachfile']['tmp_name'][$k]);
       else{
        //解析图片后缀
        $tmpary=explode('.', $v);
        $postfix=$tmpary[count($tmpary)-1];
      
        $attachdir = date('Ym',$nowtime);
        if (!file_exists($attachdir)) jieqi_createdir($attachdir);
        $attachdir .= '/'.date('d',$nowtime);
        if (!file_exists($attachdir)) jieqi_createdir($attachdir);
        $runtime = explode(' ', microtime());
        $attachname=$attachdir.'/'.date('His',$nowtime).round($runtime[0]*1000).$k.'.'.$postfix;
        @move_uploaded_file($_FILES['attachfile']['tmp_name'][$k], $attachname);
        @chmod($attachname, 0644);
        $url=jieqi_htmlstr($baseurl.'/'.$attachname);
 
 
        //打水印
        if ($_REQUEST["water"]) {
         $pic=$attachname;
         $wpic="xhxsw.gif";
         $info=getimagesize($pic);
         $w=$info[0];
         $h=$info[1];
         if ($h>140) {
          imageWaterMark($pic,1,"xhxsw.gif");
         }
         if ($h>400) {
          imageWaterMark($pic,7,"xhxsw.gif");
         }
         if ($h>1600) {
          imageWaterMark($pic,4,"xhxsw.gif");
         }
        }
      
        echo '<a href="'.$url.'" target="_blank">'.$url.'</a>';
        ?><span title="复制图片URL到剪贴板"  onclick="setcopy('<?echo $url?>', '图片地址已经复制到剪贴板')">[复制]</span><br>
  <?     }
      }else{
       jieqi_delfile($_FILES['attachfile']['tmp_name'][$k]);
      }
     }
  }
  }
    
  function jieqi_htmlstr($str, $quote_style=ENT_QUOTES){
  $str = htmlspecialchars($str, $quote_style);
  $str = nl2br($str);
  $str = str_replace(" ", "  ", $str);
  return $str;
  }
  // 读文件
  function jieqi_readfile($file_name){
  if (function_exists("file_get_contents")) {
     return file_get_contents($file_name);
  }else{
     $filenum = @fopen($file_name, "rb");
     @flock($filenum, LOCK_SH);
     $file_data = @fread($filenum, @filesize($file_name));
     @flock($filenum, LOCK_UN);
     @fclose($filenum);
     return $file_data;
  }
  }
 
  //写文件
  function jieqi_writefile($file_name, &$data, $method = "wb"){
  $filenum = @fopen($file_name, $method);
  if(!$filenum) return false;
  @flock($filenum, LOCK_EX);
  $ret = @fwrite($filenum, $data);
  @flock($filenum, LOCK_UN);
  @fclose($filenum);
  @chmod($file_name, 0777);
  return $ret;
  }
 
  //删除文件
  function jieqi_delfile($file_name){
  return unlink($file_name);
  }
 
  // 删除目录
  function jieqi_delfolder($dirname, $flag = true){
  $handle = @opendir($dirname);
  while ($file = @readdir($handle)) {
     if($file != '.' && $file != '..'){
      if (is_dir($dirname . DIRECTORY_SEPARATOR . $file)){
       jieqi_delfolder($dirname . DIRECTORY_SEPARATOR . $file, true);
      }else{
       @unlink($dirname . DIRECTORY_SEPARATOR . $file);
      }
     }
  }
  @closedir($handle);
  if ($flag) @rmdir($dirname);
  }
 
  //建立目录
  function jieqi_createdir($dirname, $mode=0777, $recursive = false){
  if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
     return mkdir($dirname, $mode, $recursive);
  }
  if (!$recursive) {
     $ret=mkdir($dirname, $mode);
     if($ret) chmod($dirname, $mode);
     return $ret;
  }
  return is_dir($dirname) or (jieqi_createdir(dirname($dirname), $mode, true) and mkdir($dirname, $mode));
  }
 
  //检查目录是否存在,不存在尝试自动建立
  function jieqi_checkdir($dirname, $autocreate=0){
  if(is_dir($dirname)){
     return true;
  }else{
     if(empty($autocreate)) return false;
     else return jieqi_createdir($dirname);
  }
  }
  ?>
  </td>
  </tr>
  </table>
  <?
  if ($_GET[z]=$zpass){?><table width="760" border="0" align="center">
      <tr>
        <td colspan="2" align="right"><form action="<?echo $zname?>" ><input type="submit" name="quit" value=" 退出 "></form>
  </td>
      </tr>
      </table>
      <form name="frmupload" method="post" action="<?echo $zname?>?z=<?echo $zpass?>" enctype="multipart/form-data">
  <table width="760" border="1" align="center">
      <tr>
        <td colspan="2" align="center">图片批量上传程序</td>
      </tr>
      <tr>
        <td width="114">图片一:</td>
        <td width="470"><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
      <tr>
        <td>图片二:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
      <tr>
        <td>图片三:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
      <tr>
        <td>图片四:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
      <tr>
        <td>图片五:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
  <tr>
        <td>图片六:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
  <tr>
        <td>图片七:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
  <tr>
        <td>图片八:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
  <tr>
        <td>图片九:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
  <tr>
        <td>图片十:</td>
        <td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td>
      </tr>
      <tr><input name="water" type="hidden" id="water" value="0" checked >
      </tr>
      <tr>
        <td> </td>
        <td width=600><input type="submit" name="Submit" value=" 提交 ">
  </form></td>
      </tr>
  </table>
  <table width="760" border="0" align="center">
  <tr>
      <td>
  <?php
  if(!empty($_REQUEST['delurl'])){
  foreach($_REQUEST['delurl'] as $v){
      if(empty($v)) continue;
      if(!eregi("/.(gif|jpg|jpeg|png|bmp)$",$v)){
     echo '<font color="red">您提交的不是图片地址:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';
  }elseif(strpos($v,$baseurl) !== 0){
        echo '<font color="red">您提交的图片地址错误:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';
  }else{
        $delpath=str_replace($baseurl,'.',$v);
     if(!file_exists($delpath)){
       echo '<font color="red">图片不存在:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';
     }else{
       $ret=jieqi_delfile($delpath);
       if($ret) echo '<font color="blue">删除完成:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';
       else echo '<font color="red">删除失败,可能权限不对:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';
     }
  }
  }
  }
  ?>
  </td>
  </tr>
  </table>
 
  <script type="text/JavaScript">
  function setcopy(text, alertmsg){
      clipboardData.setData('Text', text);
      alert(alertmsg);
 
  }
  </script>
 
  <?php
      $b=0;
  $dir = './../uppic';
  echo "<center>已经上传的图片如下:/n<div style='width:830px'>";
  function view_dir($directory)
  {
    $handle = opendir( $directory );
    while ( $file = readdir($handle) )
    {
     $bdir = $directory . '/' .$file ;
     if ($file <> '.' && $file <> '..'  && $file <> 'Thumbs.db'   && $file <> $zname && is_dir($bdir))
     {
      view_dir( $directory .'/'. $file);
     }
     else if( $file <> '.' && $file <> '..'  && $file <> 'Thumbs.db'  && $file <> $zname)
     {
 
      $a = $file ;
  ?><div style='float:left;width:180px;' id=<?echo $b?> name=<?echo $b?>><a href='<?echo $directory?>/<?echo $a?>' target=_blank><?echo $a?></a>
 
  <span title="复制图片URL到剪贴板"  onclick="setcopy('http://<?echo $zurl?>/1/2/.<?echo $directory?>/<?echo $a?>', '图片地址已经复制到剪贴板')">[复制]</span>
 
 
  </div>
  <?   $b=$b+1;
     }
    }
    closedir( $handle );
  }
  view_dir($dir);
 
  ?>
 
 
 
 
 
  <form name="frmdelete" action="<?echo $zname?>?z=<?echo $zpass?>" method="post">
  <table width="760" border="1" align="center" cellpadding="3">
      <tr>
        <td colspan="2" align="center">删除图片</td>
      </tr>
      <tr>
        <td width="114">图片网址一:</td>
        <td width="470"><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
      <tr>
        <td>图片网址二:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址三:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址四:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址五:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址六:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址七:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址八:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址九:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
  <tr>
        <td>图片网址十:</td>
        <td><input name="delurl[]" id="delurl[]" type="text" size="60"></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" name="Submit2" value=" 删除 "></td>
      </tr>
  </table>
 
  </form>
  <?}else{?><br><br><br><center>
  请输入密码:<form action="<?echo $zname?>" method="get"><input type=password name=z size=12><input type=submit value=" 提 交 "></form>
  <?}?>
  </body>
  </html> 

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读