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
第十五节--Zend引擎的发展
Nov 16 PHP
php 读取文件乱码问题
Feb 20 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php计算税后工资的方法
Jul 28 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP学习笔记之session
May 06 PHP
laravel中的fillable和guarded属性详解
Oct 23 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
模仿OSO的论坛(四)
2006/10/09 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
党员公开承诺事项
2014/03/25 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
Golang 并发编程 SingleFlight模式
2022/04/26 Golang