如何使用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对gzip文件或者字符串解压实例参考
Jul 25 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
php 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php生成与读取excel文件
Oct 14 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
php微信开发之图片回复功能
2018/06/14 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
python输出指定月份日历的方法
2015/04/23 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
为什么相对PHP黑python的更少
2020/06/21 Python
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
美术毕业生求职信
2014/02/25 职场文书
大学生村官承诺书
2014/03/28 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
2016大一新生军训感言
2015/12/08 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
python前后端自定义分页器
2022/04/13 Python