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中的正规表达式(二)
Oct 09 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
php常用图片处理类
Mar 16 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
May 31 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 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
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
python的concat等多种用法详解
2018/11/28 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
python如何爬取动态网站
2020/09/09 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
外贸业务员求职自荐信分享
2013/09/21 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
大学生自我鉴定范文
2013/12/28 职场文书
项目总经理岗位职责
2014/02/14 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
校车司机安全责任书
2015/05/11 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
深入理解go slice结构
2021/09/15 Golang