ThinkPHP打水印及设置水印位置的方法

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

时间: 2024-10-26 12:09:54

ThinkPHP打水印及设置水印位置的方法的相关文章

ThinkPHP打水印及设置水印位置的方法_php实例

本文实例讲述了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

thinkphp获取栏目和文章当前位置的方法_php实例

本文实例讲述了thinkphp获取栏目和文章当前位置的方法.分享给大家供大家参考.具体实现方法如下: 今天把博客一些细节完善了一下,其中修改了一下栏目页和文章页中的"当前位置".以前栏目很少,就用死办法做的(首页 -> 栏目的名字),现在栏目多了,渐渐二级栏目,三级栏目也来了,这样的方式显然不太合适,于是就改进了一下.也不难,利用一个递归函数就可以了. 测试效果如下图所示: 查看源文件效果: 复制代码 代码如下: <a href="http://www.jb51.

在Word2013中设置SmartArt位置的方法

  在Word2013文档中,用户可以根据需要设置SmartArt图形在Word文档中的位置.例如,用户可以使用Word2013提供的预设位置选项设置SmartArt图形位置,还可以在"布局"对话框中精确设置其位置. 如果使用预设位置选项设置SmartArt图形位置,可以选中SmartArt图形,然后在"SmartArt工具/格式"功能区中单击"排列"分组中的"位置"按钮.在打开的位置列表中选择合适的预设位置选项(例如选中&q

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

如何在WPS文档中设置水印

在WPS文档中设置水印的方法和步骤如下. 新建一篇文档,进入它的页脚中.点击菜单"视图→页眉和页脚",然后选择页脚部分(选择页眉也是可以的). 插入艺术字,并设置艺术字的版式为"衬于文字下方",该艺术字就可以在文档中的任意位置拖动了.你可以将其拖动到页面的中央部分,同时也可以旋转. 设置好后,当我们再编辑WPS文档时,每一页中都有一个水印背景了.

wps中如何设置水印

  水印一般是显示在文档文本后面的文本或图形,如"公司机密"等.有时是很需要的,但很遗憾金山WPS文字没有提供直接添加水印的功能.不过还是有方法为文档添加我们想要的水印的.下面小编和大家分享一种在WPS文字中为文档添加水印的方法. 我们先看一下在一个文档中添加了文字水印和图片水印的截图; 水印的位置和格式是可以随意设置的,别介意上面截图所示的水印比较不好看. 一.WPS中怎么加图片水印 ①点击菜单栏上的"视图→页眉页脚",打开页眉编辑区,这时光标已经定位在编辑区里了

新浪微博怎么设置水印?

  1.登陆微博,点击右上角的齿轮标志,选择"账号设置". 2.进入了设置主页面,选择"个性设置". 3.进入"个性设置"页面后,往下拉即可看到水印设置.可以自由决定水印样式和水印的位置,如果把水印样式全部取消,那么就没有水印啦.

word文档的水印如何设置

  word文档的水印如何设置 1.打开文件,点击页面布局 2.选择水印: 3.选择自定义水印: 4.弹出对话框: 5.在一下区域定义水印:(也可为图片) 6.预览效果:

c#-itextsharp添加pdf水印时,怎么设置图片水印、表格水印的透明度?

问题描述 itextsharp添加pdf水印时,怎么设置图片水印.表格水印的透明度? 哪位itextsharp高手可以指点一下,通过itextsharp添加pdf水印时,怎么设置图片水印.表格水印的透明度? 小弟通过设置PdfContentByte的waterMarkContent.SetGState(gs);,以及gs的gs.FillOpacity = 0.2f; 只对文字的透明度有效.