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 相关文章推荐
深入解析php模板技术原理【一】
Jan 10 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
Thinkphp中的curd应用实用要点
Jan 04 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php事件驱动化设计详解
2016/11/10 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
javascript dom 操作详解 js加强
2009/07/13 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python常用知识点汇总
2016/05/08 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
python 递归相关知识总结
2021/03/03 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
学习党章的体会
2014/11/07 职场文书
横店影视城导游词
2015/02/06 职场文书
英语教师求职信范文
2015/03/20 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
中标通知书
2015/04/17 职场文书
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL