PHP图片处理之使用imagecopy函数添加图片水印实例


Posted in PHP onNovember 19, 2014

为图片添加水印也是图片处理中常见的功能。因为只要在页面中见到的图片都可以很轻松地拿到,你辛辛苦苦编辑的图片不想被别人不费吹灰之力拿走就用,所以为图片添加水印以确定版权,防止图片被盗用。制作水印可以使用文字(公司名称加网址),也可以使用图片(公司LOGO),图片水印效果更好一些,因为可以通过一些做图片软件进行美化。使用文字做水印,只需要在图片上画一些文字即可。如果制作图片水印,就需要先了解一下GD库中的imagecopy()函数,能复制图片的一部分。该函数的原型如下所示:

bool imagecopy(resource dst_im,resource src_im,int dst_x,int dst_y,int src_x,int src_y,int src_w,int src_h)

该函数的作用是将src_im图像中坐标从src_x,src_y开始,宽度为src_w,高度为src_h的一部分复制到dst_im图像中坐标为dst_x和dst_y的位置上。以JPEG格式的图片为例,编写一个为图片添加水印的函数watermark(),代码如下所示:

<?php

//为背景图片添加图片水印(位置随机),背景图片格式为jpeg,水印图片格式为gif

function watermark($filename,$water){

//获取背景图片的宽度和高度

list($b_w,$b_h) = getimagesize($filename);

//获取水印图片的宽度和高度

list($w_w,$w_h) = getimagesize($water);

//在背景图片中放水印图片的位置随机起始位置

$posX = rand(0, ($b_w-$w_w));

$posY = rand(0, ($b_h-$w_h));

//创建背景图片的资源

$back = imagecreatefromjpeg($filename);

//创建水印图片的资源

$water = imagecreatefromgif($water);

//使用imagecopy()函数将水印图片复制到背景图片指定的位置中

imagecopy($back, $water, $posX, $posY, 0, 0, $w_w, $w_h);

//保存带有水印图片的背景图片

imagejpeg($back,$filename);

imagedestroy($back);

imagedestroy($water);

}

watermark("brophp.jpg", "logo.gif");

?>
PHP 相关文章推荐
PHP读写文件的方法(生成HTML)
Nov 27 PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
php将数据库导出成excel的方法
May 07 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
如何用PHP实现插入排序?
Apr 10 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
php中error与exception的区别及应用
Jul 28 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
php从字符串创建函数的方法
Mar 16 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
php+js实现的无刷新下载文件功能示例
Aug 23 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 #PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 #PHP
基于递归实现的php树形菜单代码
Nov 19 #PHP
php常用的url处理函数总结
Nov 19 #PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 #PHP
PHP中常用的字符串格式化函数总结
Nov 19 #PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 #PHP
You might like
PHP 数组教程 定义数组
2009/10/23 PHP
非常重要的php正则表达式详解
2016/01/04 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
Python递归函数实例讲解
2019/02/27 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
css弧边选项卡的项目实践
2023/05/07 HTML / CSS