如何使用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 相关文章推荐
PHP中的日期及时间
Nov 23 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
php 异常处理实现代码
2009/03/10 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python optparse模块使用实例
2015/04/09 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
Python探索之Metaclass初步了解
2017/10/28 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
谈谈python垃圾回收机制
2020/09/27 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
教师自我鉴定
2013/12/13 职场文书
音乐教学随笔感言
2014/02/19 职场文书
德育标兵事迹材料
2014/08/24 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
Python 中 Shutil 模块详情
2021/11/11 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL