PHP给图片添加图片水印

涉及到的函数:

1、file_get_contents():用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

2、list():list() 函数用于在一次操作中给一组变量赋值。

3、imagecreatefromstring():根据获取的信息载入图像

4、imagecopymerge():图片合成函数

前端页面代码:

<html>
<head>
<meta charset="UTF-8">
<title>给上传的图片添加水印</title>
</head>
<body>
<form action="shuiyin.php" method="post" enctype="multipart/form-data">
<input  name="img" type="file">
<input type="submit">
</form>
</body>
</html>

后端PHP代码:

header("Content-type:text/html;charset=utf-8");
if(isset($_FILES['img']['tmp_name'])){
    
    if($_FILES['img']['type'] !== 'image/jpeg'){
        echo '上传文件不符合要求,必须是图片!';
    }else{
        //保存图片
        move_uploaded_file($_FILES['img']['tmp_name'],'uploads/'.time().'.jpg');
        //获取上传图片和水印图的宽高
        $img = 'uploads/'.time().'.jpg';
        list($img1x,$img1y) = getimagesize($img);
        $shuiyin = 'uploads/shuiyin.jpg';
        list($img2x,$img2y) = getimagesize($shuiyin);
        //将图片生成实例
        $i = imagecreatefromstring(file_get_contents($img));
        $s = imagecreatefromstring(file_get_contents($shuiyin));
        //图片合成
        imagecopymerge($i,$s,10,10,0,0,$img2x,$img2y,30);
        header("Content-type:image/jpeg");
        imagejpeg($i);
    }
}else{
    echo "<script>alert('文件未上传!')</script>";
}

合成后图片:

如果想让水印出现在右下角或者下方,调整imagecopymerge函数参数即可。

总结:

先获取上传图片的宽高、及图片的实质信息(通过file_get_contents()获取),之后通过PHP函数imagecopymerge将图片进行合成。

posted @ 2017-12-20 21:47  程昱仲德  阅读(938)  评论(0编辑  收藏  举报