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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
php获取linux命令结果的实例
Mar 13 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php实现微信发红包功能
Jul 13 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
Laravel-admin之修改操作日志的方法
Sep 30 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
用Flash图形化数据(一)
2006/10/09 PHP
浅析is_writable的php实现
2013/06/18 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
简单谈谈json跨域
2016/03/13 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
python实现目录树生成示例
2014/03/28 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python线程详解
2015/06/24 Python
Python 登录网站详解及实例
2017/04/11 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
const和static readonly区别
2013/05/20 面试题
雷锋精神演讲稿
2014/05/13 职场文书
护士医德医风心得体会
2016/01/25 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS