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将图片进行合成。