如何使用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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
php xml文件操作实现代码(二)
Mar 20 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
PHP中两个float(浮点数)比较实例分析
Sep 27 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 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
第十三节 对象串行化 [13]
2006/10/09 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
jQuery自动或手动图片切换效果
2017/10/11 jQuery
javascript Function函数理解与实战
2017/12/01 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
Python元组知识点总结
2019/02/18 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
上班时间打瞌睡检讨书
2014/09/26 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
2019秋季运动会口号
2019/06/25 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL