本文实例讲述了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代码。发现,作者居然是写死了,我只能做一个修改

/**

* 为图片添加水印

* @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 水印位置,ThinkPHP打水印及设置水印位置的方法相关推荐

  1. php分析图片中水印的位置,thinkphp添加图片、文字水印 自定义位置等

    只添加文字水印 //生成带水印的图片 $image = new \Think\Image(); //定义位置 $path="./Upload/water/".$time." ...

  2. php当前栏目位置,thinkphp获取栏目和文章当前位置的方法,_PHP教程

    thinkphp获取栏目和文章当前位置的方法, 本文实例讲述了thinkphp获取栏目和文章当前位置的方法.分享给大家供大家参考.具体实现方法如下: 今天把博客一些细节完善了一下,其中修改了一下栏目页 ...

  3. 【CSS】CSS 背景设置 ② ( 背景位置 | 背景位置-方位值设置 )

    文章目录 一.背景位置 1.语法说明 2.注意事项 二.背景位置-方位值设置 1.效果展示 2.完整代码示例 一.背景位置 1.语法说明 如果 盒子的大小 大于 背景图片的大小 , 默认的 图片 位置 ...

  4. php分析图片中水印的位置,关于ThinkPHP打水印及设置水印位置的分析

    这篇文章主要介绍了ThinkPHP打水印及设置水印位置的方法,结合实例形式分析了thinkPHP打印与设置水印的相关操作步骤与具体实现技巧,需要的朋友可以参考下 本文实例讲述了ThinkPHP打水印及 ...

  5. Java使用POI为Excel打水印,调整列宽并设置Excel只读

    武林游戏 2017-05-02 11:15 本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项. 需求描述: 要求通过系统下载的Excel都带上公司 ...

  6. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  7. word文字铺满页面_Word 2010文档中让水印铺满整个页面的设置方法

    在Word 2010中,通过简单的鼠标单击即可为文档添加水印,但这样只能在每一个文档页面内添加一个水印,这个在前面的文章已经有所介绍,具体请见:Word文档添加内置水印.个性化图片及文字水印的方法,但 ...

  8. flink 不设置水印_区分理解Flink水印延迟与窗口允许延迟的概念

    link 在开窗处理事件时间(Event Time) 数据时,可设置水印延迟以及设置窗口允许延迟(allowedLateness)以保证数据的完整性.这两者因都是设置延迟时间所以刚接触时容易混淆.本文 ...

  9. word加水印铺满java,Word 2010文档中让水印铺满整个页面的设置方法

    在Word 2010中,通过简单的鼠标单击即可为文档添加水印,但这样只能在每一个文档页面内添加一个水印,这个在前面的文章已经有所介绍,具体请见:Word文档添加内置水印.个性化图片及文字水印的方法,但 ...

最新文章

  1. 二、Silverlight中使用MVVM(二)——提高
  2. 两种写法的效果一样,那么到底哪一种更好呢?
  3. win7设置开机后自动锁定计算机,Win7系统锁定计算机怎么设置 win7系统自动锁定...
  4. Python/WSGI 应用快速入门--转
  5. Go全局变量syntax error: non-declaration statement outside function bodygo
  6. java修改hidden_Java ColumnConfig.setHidden方法代码示例
  7. Popupwin结合Timer实现定时弹出消息提示
  8. Hibernate 笔记 缓存
  9. halcon使用直线标定板,标定相机内参代码
  10. navigator.geolocation的应用 - 将定位信息显示在百度地图上
  11. Java核心类库篇5——异常
  12. matlab没有找到图形用户界面,MATLAB中不能设计图形用户界面。
  13. 【hue】 hue+sentry界面没有添加角色的按钮
  14. rpc之使用httpserver实现tpc
  15. 孙鑫VC学习笔记:第十六讲 (二) 利用关键代码段实现线程间的同步
  16. 批处理获取网卡名称(附修改IP、网关、DNS脚本)
  17. 软件安装 | 神器VAX Patch VA_X.DLL 安装位置的问题 for VS2008 , VS2010 , VS2011
  18. Quartz配置RMI设置-006
  19. 小组赛,每个小组有5支队伍,互相之间打单循环赛,胜一场3分,平一场1分,输一场不得分,小组前三名出线。平分抽签。问一个队最少拿()分就有理论上的出线希望
  20. C++视频教程资源链接合集

热门文章

  1. 自定义View6 -塔防小游戏:第三篇防御塔随意放置+多组野怪
  2. 计算机组成原理--动态链接
  3. 百度前端学院_小薇课堂_task2
  4. 【解决Windows】电脑桌面文件卡顿变白问题
  5. 网络编程懒人入门(十一):一文读懂什么是IPv6
  6. Istio1.12.1 Sidecar注入配置
  7. 2022天梯赛热身赛 浪漫侧影(什么原题)
  8. 酷狗社招面试 java_2019前端面试社招经验分享(网易,酷狗)
  9. 共享单车管理系统_多场景布局,才是共享充电宝赢得用户的关键
  10. 联想固体硬盘检查软件_固体。 软件设计原理