php 图片批量加水印

来源:互联网 发布:招魂类似的电影知乎 编辑:程序博客网 时间:2024/05/20 05:22

本文实例讲述了PHP图片加水印实现方法。分享给大家供大家参考,代码不是很完善,欢迎大家多多指教!代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />    <title>图片批量加水印</title>    <script language="javascript" type="text/javascript">        function AddInput(){            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    /**    * 为图片加水印    * @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 = 80){        //获取目图片的根基信息        $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;    }    if(isset($_POST['sub']) && $_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']); //取得上传文件个数        if($fnum > 0){            echo '<div style="width: 600px;margin: 0 auto;">';            for($i = 0;$i < $fnum;$i++){                $n = $i + 1;                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/>'.$n.'. 文件上传成功!('.$fname[$i].')';                        // 生成水印图片                        watermark($fname[$i],$waterimg);                     }else{                        echo '<br/>'.$n.'. 不允许的文件类型!';                        exit;                    }                }else{                    echo '<br/>'.$n.'. 该文件不存在!';                }              }            echo '</div>';        }    }    ?>    <body>        <div style="width: 600px;margin: 0 auto;">            <h2>图片批量加水印</h2>            <hr>            <a href="javascript:;" onclick="AddInput()">再上传一张</a>            <!-- <button onclick="AddInput()" type="button" style="color: #FFF;background-color: red;border: 0;padding: 5px;">再上传一张</button> --><br/><br/>            <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>        </div>    </body></html>
0 0
原创粉丝点击