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 20 PHP
php 正则表达式小结
Aug 31 PHP
php ajax 静态分页过程形式
Sep 02 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
php生成唯一的订单函数分享
Feb 02 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP反射API示例分享
Oct 08 PHP
Thinkphp开发--集成极光推送
Sep 15 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
实用函数9
2007/11/08 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
php中fsockopen用法实例
2015/01/05 PHP
php短址转换实现方法
2015/02/25 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jQuery 解析xml文件
2009/08/09 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
loading动画特效小结
2017/01/22 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
python 内置函数汇总详解
2019/09/16 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
商业融资计划书
2014/04/29 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
走进敬老院活动总结
2014/07/10 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
中秋节晚会开场白
2015/05/29 职场文书
珍爱生命主题班会
2015/08/13 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis