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 透明。

我需要把水印打到图片的真中间,查看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;
   }
}
好像就可以了~

时间: 2024-10-08 04:16:05

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打水印及设置水印位置的方法

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

如何在WPS文档中设置水印

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

wps中如何设置水印

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

新浪微博怎么设置水印?

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

java web-请问以下这句代码是依据什么原理,来设置起始位置的?麻烦简单举例说明

问题描述 请问以下这句代码是依据什么原理,来设置起始位置的?麻烦简单举例说明 解决方案 这就是一个典型的通过java代码分页 首先everyPage指的是重前台获取到的每页要显示的数据条数,这里明显是可以通过前台设置的,比如设置每页显示10条,那么每页显示的数据就是,因为数据库显示是从0条开始的第一页0-9条数据,第二页10-19条,第三页20-29条.......那么第页就是(n-1)*10-(n*10-1)条,所以这里的currentPage指的是要跳往第几页,比如跳往第5页,就是(5-1)

php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码_php技巧

复制代码 代码如下: <?php //上传文件类型列表 $uptypes=array( 'image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif', 'image/bmp', 'image/x-png' ); $max_file_size = 200000; //上传文件大小限制, 单位BYTE $path_im = "prod_img/"; //生成大图保存文件夹路径 $path_sim = "

如何在Word 2013中设置SmartArt位置

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

WPF学习备忘(2)WPF获取和设置鼠标位置与progressbar的使用方法

一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition (e.Source as FrameworkElement); Point p = (e.Source as FrameworkElement).PointToScreen(pp); 方法二: API方法 /// <summary> /// 设置鼠标的坐标 /// </summary> /// <param name="x">横坐标</