<?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到剪贴板" $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/java script"> 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到剪贴板" $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>
转自:http://www.mycodes.net/74/2407.htm