首页 > php框架 > php 多个文件上传(给图片加水印实例)

php 多个文件上传(给图片加水印实例)

php 多个文件上传(给图片加水印实例)

php教程 多个php文件上传/ target=_blank >文件上传(给图片加水印实例)

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.php100.com/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
<title>php 多个文件上传(给图片加水印实例)</title>
<script language="网页特效" type="text/网页特效">
function addinput()//增加input节点
{
var input=document.createelement(input);//创建一个input节点
var br=document.createelement(br);//创建一个br节点
input.setattribute(type,file);// 设置input节点type属性为file
input.setattribute(name,files[]);//设置input节点 name属性为files[],以 数组的方式传递给服务器端
document.form1.appendchild(br);//把节点添加到 form1表单中
document.form1.appendchild(input);
}
</script>
</head>
<?php
if($_post[sub]=="www")
{
$waterimg="water.png";
$ftype=array(image/jpg,image/jpeg,imgage/png,image/pjpeg,image/gif);//允许上传的文件类型
$files=$_files[files];
$fnum=count($files[name]); //取得上传文件个数
for($i=0;$i<$fnum;$i++)
{
 
   if($files[name][$i]!=&&is_uploaded_file($files[tmp_name][$i]))
   {
  
    if(in_array($files[type][$i],$ftype))//判断文件是否是允许的类型
    {
 
     $fname[$i]=upfile/.rand(0,10000).time().substr($files[name] [$i],strrpos($files[name][$i],.));//自动命名
     move_uploaded_file($files[tmp_name][$i],$fname[$i]);
     echo <br/>文件上传成功!;
 
    }
    else
    {
     echo <br/>不允许的文件类型!;
  exit;
    }
   }
   else
   {
    echo <br/>该文件不存在!;
 exit;
   }
watermark($fname[$i],$waterimg);   
}
 
  $string=implode(|,$fname);
 echo $string;
}
 
?>
<body>
<form name="form1" method="post" action="" enctype="multipart/form-data" >
    <input type="file" name="files[]" id="files[]" />
<input type="submit" name="sub" value="上传"/>
<input name="sub" type="hidden" id="sub" value="www" />
</form>
<a href="#" onclick="addinput()">再上传一张</a>
<?
/**
* 为图片加水印
* @param string $desimg 目标图片 参数格式为 ./images/pic.jpg
* @param string $waterimg 水印图片 参数格式同上,水印图片为 png格式,背景透明
* @param int positon 水印地位 1:顶部居左 2:顶部居右 3:居中 4 :底部居左 5:底部居右
* @param bool $saveas 能否另存为,默许值false,默示笼盖原图
* @param int $alpha 水印图片的不通明度
* @return string $savepath 新图片的途径
* **/
function watermark($desimg,$waterimg,$positon=1,$saveas=false,$alpha=30)
{
//获取目图片的根基信息
$temp=pathinfo($desimg);
$name=$temp["basename"];//文件名
$path=$temp["dirname"];//文件地点的文件夹
$extension=$temp["extension"];//文件扩展名
if($saveas)
{
//需要另存为
$name=rtrim($name,".$extension")."_2.";//从头命名
$savepath=$path."/".$name.$extension;
}
else
{
//不需要另存为则笼盖原图
$savepath=$path."/".$name;
}
$info=getimageinfo($desimg);//获取目标图片的信息
$info2=getimageinfo($waterimg);//获取水印图片的信息
$desimg=create($desimg);//从原图创立
$waterimg=create($waterimg);//从水印图片创立
//地位1:顶部居左
if($positon==1)
{
$x=0;
$y=0;
}
//地位2:顶部居右
if($positon==2)
{
$x=$info[0]-$info2[0];
$y=0;
}
//地位3:居中
if($positon==3)
{
$x=($info[0]-$info2[0])/2;
$y=($info[1]-$info2[1])/2;
}
//地位4:底部居左
if($positon==4)
{
$x=0;
$y=$info[1]-$info2[1];
}
//地位5:底部居右
if($positon==5)
{
$x=$info[0]-$info2[0];
$y=$info[1]-$info2[1];
}
imagecopymerge($desimg,$waterimg,$x,$y,0,0,$info2[0],$info2[1],$alpha);
imagejpeg($desimg,$savepath);
imagedestroy($desimg);
imagedestroy($waterimg);
return $savepath;
}
/**
* 获取图片的信息,width,height,image/type
* @param string $src 图片途径
* @return 数组
* **/
function getimageinfo($src)
{
return getimagesize($src);
}
/**
* 创立图片,前往本钱范例
* @param string $src 图片途径
* @return resource $im 前往本钱范例
* **/
function create($src)
{
$info=getimageinfo($src);
switch ($info[2])
{
case 1:
$im=imagecreatefromgif($src);
break;
case 2:
$im=imagecreatefromjpeg($src);
break;
case 3:
$im=imagecreatefrompng($src);
break;
}
return $im;
}
 ?>

</body>
</html>


本文地址:http://www.phprm.com/frame/php1005085.html

转载随意,但请附上文章地址:-)

标签:none

发表留言