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 相关文章推荐
关于文本留言本的分页代码
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
PHP防注入安全代码
Apr 09 PHP
discuz7 phpMysql操作类
Jun 21 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
Prototype String对象 学习
2009/07/19 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
python判断完全平方数的方法
2018/11/13 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python实现翻译word表格小程序
2020/02/27 Python
python如何进入交互模式
2020/07/06 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
保护地球的标语
2014/06/17 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
给上级领导的感谢信
2015/01/22 职场文书
庆六一开幕词
2015/01/29 职场文书
学会感恩主题班会
2015/08/12 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP