两种php给图片加水印的实现代码


Posted in PHP onApril 18, 2020

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字体的路径*/
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 相关文章推荐
基于mysql的bbs设计(五)
Oct 09 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
php设计模式之单例模式代码
Jun 11 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
php实现微信支付之现金红包
May 30 PHP
详解laravel安装使用Passport(Api认证)
Jul 27 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 PHP
php简单生成随机数的方法
Jul 30 #PHP
php简单判断文本编码的方法
Jul 30 #PHP
php实现的数字验证码及数字运算验证码
Jul 30 #PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 #PHP
PHP实现批量修改文件后缀名的方法
Jul 30 #PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 #PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 #PHP
You might like
php自动加载autoload机制示例分享
2014/02/20 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
Python入门篇之面向对象
2014/10/20 Python
Python简单读取json文件功能示例
2017/11/30 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python对wav文件的重采样实例
2020/02/25 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
八年级物理教学反思
2014/01/19 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL