涉及到的函数:

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

PHP给图片添加图片水印的更多相关文章

  1. php 图片添加文字水印 以及 图片合成(微信快码传播)

    1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...

  2. 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现

    1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image ...

  3. Swift - 给图片添加图片水印(图片上绘制另一张图,并可设透明度)

    我前面写了篇文章讲解如何给图片添加文字水印,而如果想要添加图片类型的水印也很简单,只要把原来代码里添加文字的部分改成图片即可. 1,效果图如下: (在图片左上角添加了一个半透明的logo图片) 2,为 ...

  4. Swift - 给图片添加文字水印(图片上写文字,并可设置位置和样式)

    想要给图片添加文字水印或者注释,我们需要实现在UIImage上写字的功能. 1,效果图如下: (在图片左上角和右下角都添加了文字.) 2,为方便使用,我们通过扩展UIImage类来实现添加水印功能 ( ...

  5. C#图片添加文字水印

    /// <summary> /// 给图片添加文字水印 /// </summary> /// <param name="img">图片</ ...

  6. php图片添加文字水印方法汇总

    方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a. ...

  7. php给图片添加文字水印方法汇总

    在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 ...

  8. php使用GD库实现图片水印和缩略图——给图片添加文字水印

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

  9. PHP给图片添加文字水印实例

    PHP给图片添加文字水印实例,支持中文文字水印,是否覆盖原图,自定义设置水印背景色.文字颜色.字体等. 水印类water.class.php var $Path = "./"; / ...

  10. php使用GD库实现图片水印和缩略图——给图片添加图片水印

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

随机推荐

  1. mysql的数据类型与表约束

    数据类型 (详细数据类型请参考:http://www.runoob.com/mysql/mysql-data-types.html) 数字 整型  tinyint int bigint 小数: flo ...

  2. 关于具有I2C总线的TEA6320的使用

    现在先了解一下TEA6320,TEA6320是一个I2C总线控制音响应用的立体声放大器,,它的I2C协议和音量控制如下: 它的主要代码: void delay1ms(unsigned int Dela ...

  3. C指针(3)——指向指针的指针(程序讲解)

    int **q可以分成两部分,即int* 和 (*q),后面的 “q” 中的* 表示q是一个指针变量,前面的int*表示指针变量q只能存放int*型变量的地址.int** q表示为指针变量q只能存放i ...

  4. Git项目管理

    参考 参考书籍 <git学习指南> 参考网站 https://git-scm.com/ Git局限性讨论 高复杂度 两张图看懂集中式版本管理系统和分布式管理系统的区别-集中式vs分布式 g ...

  5. c#中insert Geography的字段,包含事务

    SqlConnection conn = new SqlConnection(); conn.ConnectionString ="你的sql server数据库连接字符串"; c ...

  6. 天嵌IMX6开发板测试-第一篇

    1.看下开发板介绍 品牌: 天嵌 CPU型号: NXP i.MX6Q 架构: Cortex_A9 主频: *1GHz 内存: 2GB DDR3 存储: 8GB eMMC FLA(64GB可扩) 2. ...

  7. Python3.6+selenium3.8+Firefox5.7 环境搭建

    大家好,我是阿哲,本人是从php转岗过来学习测试的一名小菜! 在学习selenium过程中,发现运行selenium有很多的问题. 我们在利用pip install selenium 安装的最新版后, ...

  8. 【转】: 《江湖X》开发笔谈 - 热更新框架

    前言 大家好,我们这期继续借着我们工作室正在运营的在线游戏<江湖X>来谈一下热更新机制以及我们的理解和解决方案.这里先简单的介绍一下热更新的概念,熟悉这部分的朋友可以跳过,直接看我们的方案 ...

  9. java学习过程小问题

    一:基本的需要注意点(基础语句); package my; public class hello { public static void main(String[] args) { // TODO ...

  10. HDFS essay 2 - Clarify Name Node / Checkpoint Node/ Backup Node

    为什么想用英文写了?我获取知识.技术的大部分途径都是通过英文,所以按照自己的理解用英文写下来也比较容易,另外,很多term都是不能翻译的,如果要持续学习技术和知识,那就不但要习惯去阅读,听,还要写,说 ...