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

news/2024/11/23 9:34:49/

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

9a821215aaffd00e43f204831a11464c.png

我需要把水印打到图片的真中间,查看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程序设计有所帮助。


http://www.ppmy.cn/news/726686.html

相关文章

HTML常用的标签-11.29

HTML常用的标签 1.HTML的解释标签&#xff1a;1).meta标签(网页配置) 2).title标签(设置网页标题&#xff09; 3).link(导入外部文件) 4). style(设置内部样式) 5). script(添加内部js代码) 2.标签语法&#xff1a; ​ <标签名 属性名1“属性值1” 属性名2“属性值2”…

android拍照模糊,解决Android拍照并显示在ImageView中变模糊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public class ImageThumbnail { public static int reckonThumbnail(int oldWidth, int oldHeight, int newWidth, int newHeight) { if ((oldHeight > newHeight && oldWidth > newWidth) || (oldHeight < newH…

“鲁班”画海报、“小蜜”当客服,“菜鸟”管物流……,双十一阿里黑科技知多少...

热热闹闹&#xff0c;红红火火的2017 “双十一”网络购物大趴又过去了&#xff0c;在这个“双十一”&#xff0c;根据阿里巴巴官方数据显示&#xff0c;2017淘宝双十一交易额达到1682.69亿元&#xff0c;刷新了2016年记录&#xff0c;同比增速为39.36%。对于这些数据&#xff0…

招募 | 大航海计划第二期招募开始拉!

噔噔噔噔&#xff5e;天空一声雷&#xff0c;大航海计划第二期招募&#xff0c;正式开启&#xff01; 在宣布大航海计划开始之初&#xff0c;其实很多小伙伴对这个计划有疑惑。还有很多直接私聊我的&#xff0c;「到底做什么的&#xff1f;」「我需要做什么&#xff1f;」「我现…

软件验证码显示服务器连接错误,验证码总是提示错误,验证码错误的解决办法 专家详解...

验证码是为了防止不法份子通过暴力登录来猜解用户密码的一种防护手段&#xff0c;但是虽然提高了安全性&#xff0c;用户在登录输入验证码的同时也是痛苦万分&#xff0c;很多验证码看也看不清&#xff0c;总是出现提示验证码错误&#xff0c;而有时明明输入是对的&#xff0c;…

侧边导航

HTML代码&#xff1a; <div class"content"><p>悬赏金</p><img src"http://imgsrc.baidu.com/forum/pic/item/8ce23bc79f3df8dc20386c84cd11728b47102848.jpg"><img src"http://imgsrc.baidu.com/forum/pic/item/373e495…

Android 拍照或相册中选择图片编辑功能(仿微信拍照或相册选择照片编辑功能)

最终效果图&#xff1a; 实现方案&#xff1a;自定义一个父容器RelativeLayout将ImageView放入父容器中并初始化一个和ImageView相同大小的DrawingView来做涂鸦层最后将ImageView和DrawingView重叠部分生成Bitmap。 父容器代码PhotoEditorView&#xff1a; public class P…

独家专访蚂蚁金服旗下蚂蚁佐罗CEO Toby Rush,揭秘识别同卵多胞胎背后的技术力量

撰文 | 高静宜 编辑 | 微胖 11 月 3 日&#xff0c;iPhone X 全球同步开售&#xff0c;不过在此之前&#xff0c;第一批入手 iPhone X 测评机的媒体&#xff0c;已经掀起了一波用双胞胎测试 FaceID 识别功能的高潮。同一天&#xff0c;一家名为蚂蚁佐罗的公司发布全球首个眼纹…