ThinkPHP打水印及设置水印位置的方法


Posted in PHP onOctober 14, 2016

本文实例讲述了ThinkPHP打水印及设置水印位置的方法。分享给大家供大家参考,具体如下:

最近在用Thinkphp的打水印的功能,发现只能打在左下角。 PHP打水印功还是很容易的,最要是用到

bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。

水印demo图:

ThinkPHP打水印及设置水印位置的方法

我需要把水印打到图片的真中间,查看Thinkphp代码。发现,作者居然是写死了,我只能做一个修改

/**
* 为图片添加水印
* @static public
* @param string $source 原文件名
* @param string $water 水印图片
* @param string $$savename 添加水印后的图片名
* @param string $postion 水印的具体位置 leftbottom rightbottom lefttop righttop center <新增>
* @param string $alpha 水印的透明度
* @return void
*/
static public function water($source, $water, $savename=null,$postion="center", $alpha=80) {
//检查文件是否存在
if (!file_exists($source) || !file_exists($water))
return false;
//图片信息
$sInfo = self::getImageInfo($source);
$wInfo = self::getImageInfo($water);
//如果图片小于水印图片,不生成图片
if ($sInfo["width"] < $wInfo["width"] || $sInfo['height'] < $wInfo['height']) return false; //建立图像 $sCreateFun = "imagecreatefrom" . $sInfo['type']; $sImage = $sCreateFun($source); $wCreateFun = "imagecreatefrom" . $wInfo['type']; $wImage = $wCreateFun($water); //设定图像的混色模式 imagealphablending($wImage, true); //图像位置,默认为右下角右对齐 $posArr = $this->WaterPostion($postion,$sInfo,$wInfo); //新增
  //生成混合图像
  imagecopymerge($sImage, $wImage, $posArr[0], $posArr[1], 0, 0, $wInfo['width'], $wInfo['height'], $alpha);
  //输出图像
  $ImageFun = 'Image' . $sInfo['type'];
 //如果没有给出保存文件名,默认为原图像名
 if (!$savename) {
   $savename = $source;
   @unlink($source);
  }
 //保存图像
  $ImageFun($sImage, $savename);
   imagedestroy($sImage);
 }
 private function WaterPostion($postion,$sInfo,$wInfo)
 {
   $posY = $sInfo["height"] - $wInfo["height"];
   $posX = $sInfo["width"] - $wInfo["width"];
  switch($postion)
 {
   case "rightbottom":
    return array($posX,$posY);
   break;
   case "leftbottom":
    return array($wInfo["width"],$posY);
   break;
   case "lefttop":
    return array($wInfo["width"],$wInfo["height"]);
   break;
   case "righttop":
    return array($posX,$wInfo["height"]);
   break;
   case "center":
    return array($posX/2,$posY/2);
  break;
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
第九节 绑定 [9]
Oct 09 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
php实现jQuery扩展函数
Oct 30 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php有道翻译api调用方法实例
Dec 22 PHP
php实现图片等比例缩放代码
Jul 23 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
PHP实现文字写入图片功能
Feb 18 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 #PHP
php版微信公众号接口实现发红包的方法
Oct 14 #PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 #PHP
php版银联支付接口开发简明教程
Oct 14 #PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 #PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 #PHP
thinkphp分页实现效果
Oct 13 #PHP
You might like
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python 列表理解及使用方法
2017/10/27 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python监控nginx端口和进程状态
2019/09/06 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
美国玩具公司:U.S.Toy
2018/05/19 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
介绍一下except的用法和作用
2015/01/22 面试题
财务会计专业毕业生自荐信
2013/10/19 职场文书
专科毕业生就业推荐信
2013/11/01 职场文书
求职自荐信
2013/12/14 职场文书
反腐倡廉标语
2014/06/24 职场文书
党支部特色活动方案
2014/08/20 职场文书
办理收楼委托书范本
2014/10/09 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
考试没考好检讨书
2015/05/06 职场文书
教师节老师寄语
2015/05/28 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python