如何使用PHP给图片加水印


Posted in PHP onOctober 12, 2016

为了防止辛苦做出来的图片被盗用,很多照片都会加上水印,可以直接用图片工具添加水印再上传,但PHP中就可以实现给图片加水印的功能,本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码。

方法一:PHP最简单的加水印方法

<?php
$img = imagecreatefromjpeg($filename);
$logo = imagecreatefromjpeg($filename);
/*imagecraetefromjpeg-由文件或URL创建一个新图像
imagecreatefromjpeg(string $filename)
如果启用了fopen包装器,URL可以作为文件名*/
imagecopy($img,$logo,15,15,0,0,$width,$height);
/*imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h)
$dst_im是背景图像,就是需要添加水印的图片
$src_im是水印图片;$dst_x,#dst_y需要把水印放到背景图片的(x,y)坐标;
$src_x,$src_y是截取水印的图片的开始坐标
$width,$height是截取的图片的就是水印的长度和宽度*/
$url = 'http://www.stchat.cn/data/attachment/forum/201506/12/100759pidbdaydh8dy7iby.jpg';
$content = file_get_contents($url);//把url写入到content这个变量里面
/*file_get_contents--将整个文件读入到一个字符串*/
$filename = 'tmp.jpg';
file_put_contents($filename,$content);
//把所有内容放到filename这个变量里面,第一个存放的是背景图片
/*file_put_contents(string $filename,mixed $data)将一个字符串写入一个文件
filename要被写入数据的文件名
data要写入的数据,类型可以是string,array或者是stream资源*/
$url = '';
file_put_contents('logo.png',file_get_contents($url));
//第二个是水印的图片
$img = imagecreatefromjpeg($filename);
$logo = imagecreatefrompng('logo.png');
$size = getimagesize('logo.png');
/*getimagesize()获得图像大小*/
imagecopy($img,$logo,15,15,0,0,$size[0],$size[1]);
header("centent-type:image/jpeg");
imagejpeg(img);
?>

方法二:php给图片加文字水印

<?php
/*给图片加文字水印的方法*/
$dst_path = 'http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg';
$dst = imagecreatefromstring(file_get_contents($dst_path));
/*imagecreatefromstring()--从字符串中的图像流新建一个图像,返回一个图像标示符,其表达了从给定字符串得来的图像
图像格式将自动监测,只要php支持jpeg,png,gif,wbmp,gd2.*/
$font = './t1.ttf';
$black = imagecolorallocate($dst, 0, 0, 0);
imagefttext($dst, 20, 0, 10, 30, $black, $font, 'Hello world!');
/*imagefttext($img,$size,$angle,$x,$y,$color,$fontfile,$text)
$img由图像创建函数返回的图像资源
size要使用的水印的字体大小
angle(角度)文字的倾斜角度,如果是0度代表文字从左往右,如果是90度代表从上往下
x,y水印文字的第一个文字的起始位置
color是水印文字的颜色
fontfile,你希望使用truetype字体的路径
http://www.manongjc.com/article/1302.html */
list($dst_w,$dst_h,$dst_type) = getimagesize($dst_path);
/*list(mixed $varname[,mixed $......])--把数组中的值赋给一些变量
像array()一样,这不是真正的函数,而是语言结构,List()用一步操作给一组变量进行赋值*/
/*getimagesize()能获取到什么信息?
getimagesize函数会返回图像的所有信息,包括大小,类型等等*/
switch($dst_type){
 case 1://GIF
 header("content-type:image/gif");
 imagegif($dst);
 break;
 case 2://JPG
 header("content-type:image/jpeg");
 imagejpeg($dst);
 break;
 case 3://PNG
 header("content-type:image/png");
 imagepng($dst);
 break;
 default:
 break;
 /*imagepng--以PNG格式将图像输出到浏览器或文件
 imagepng()将GD图像流(image)以png格式输出到标注输出(通常为浏览器),或者如果用filename给出了文件名则将其输出到文件*/
}
imagedestroy($dst);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Discuz板块横排显示图片的实现方法
May 28 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
php简单操作mysql数据库的类
Apr 16 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
php版微信数据统计接口用法示例
Oct 12 #PHP
php版微信js-sdk支付接口类用法示例
Oct 12 #PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 #PHP
如何使用php等比例缩放图片
Oct 12 #PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 #PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 #PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 #PHP
You might like
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
php GeoIP的使用教程
2011/03/09 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
php三元运算符知识汇总
2015/07/02 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
js中的屏蔽的使用示例
2013/07/30 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
大学生简历中个人的自我评价
2013/10/06 职场文书
家长评语和期望
2014/02/10 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
农村文化建设标语
2014/10/07 职场文书
毕业论文致谢信
2015/05/14 职场文书
考试后的感想
2015/08/07 职场文书
技术转让协议书
2016/03/19 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫