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 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
php_pdo 预处理语句详解
Nov 21 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
php文件操作相关类实例
2015/06/18 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
python多进程重复加载的解决方式
2019/12/13 Python
python实现银行实战系统
2020/02/26 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
五年级科学教学反思
2014/02/05 职场文书
电焊工岗位职责
2014/03/06 职场文书
毕业留言寄语大全
2014/04/10 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
上诉状格式
2015/05/23 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python