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对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php url路由入门实例
Apr 23 PHP
PHP开发微信支付的代码分享
May 25 PHP
PHP 导出Excel示例分享
Aug 18 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
深入浅析php json 格式控制
Dec 24 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
PHP实现二维数组中的查找算法小结
Jun 09 PHP
在Laravel5中正确设置文件权限的方法
May 22 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 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实现的增强性mhash函数
2015/05/27 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python入门篇之条件、循环
2014/10/17 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Sanic框架配置操作分析
2018/07/17 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python文字转语音实现过程解析
2019/11/12 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
医德考评自我评价
2014/09/14 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
python实现学生信息管理系统(面向对象)
2022/06/05 Python