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原创论坛
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
php 什么是PEAR?(第三篇)
Mar 19 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
简单解决新浪SAE无法上传文件的问题
May 13 PHP
CodeIgniter视图使用注意事项
Jan 20 PHP
Yii实现简单分页的方法
Apr 29 PHP
php日期操作技巧小结
Jun 25 PHP
php pdo操作数据库示例
Mar 10 PHP
零基础php编程好学吗
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
什么是短波收听SWL
2021/03/01 无线电
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
python之wxPython应用实例
2014/09/28 Python
Python_LDA实现方法详解
2017/10/25 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python 调用有道api接口的方法
2019/01/03 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
信息专业本科生个人的自我评价
2013/10/28 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
学生感冒英文请假条
2014/02/04 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
单位接收证明格式
2015/06/18 职场文书