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

这篇文章主要介绍了ThinkPHP打水印及设置水印位置的方法,结合实例形式分析了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图:

cf4c0c94994f1aa9a3bb778c0b4e884a.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;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为交换机命令_华为交换机常用命令

华为交换机常用命令&#xff1a;1、display current-configuration 显示当前配置2、display interface GigabitEthernet 1/1/4 显示接口信息3、display packet-filter interface GigabitEthernet 1/1/4 显示接口acl应用信息4、display acl all 显示所有acl设置 3900系列交换机5…

文件管理系统_Python学习第170节--Linux文件管理系统实际操作和具体介绍

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】上节我们简单了解了Linux文件管理系统&#xff0c;现在我们学习它的实际操作。首先我们解释下~和/的区别。~之前我们介绍过&#xff0c;我们说~是Linux系统的根目录&#xff0c;其实这个说法是不准确的&#xf…

redis 计数器 java_Redis 的 8 大应用场景!

之前讲过Redis的介绍&#xff0c;及使用Redis带来的优势&#xff0c;这章整理了一下Redis的应用场景&#xff0c;也是非常重要的&#xff0c;学不学得好&#xff0c;能正常落地是关键。下面一一来分析下Redis的应用场景都有哪些。1、缓存缓存现在几乎是所有中大型网站都在用的必…

预测分析算法的设计与实现_基于LD(编辑距离算法)的单词速记数据库分析设计与实现...

2020-21-1学期《最新数据库管理系统》结课作业展示。作者&#xff1a;牟伦利 褚四浩 陈思琴 曹鹏飞(电商11802)分工陈思琴&#xff1a;系统需求分析 、系统相关算法分析和ER图曹鹏飞&#xff1a;系统数据字典 、业务流程图、数据流程图和PPT制作牟伦利&#xff1a;存储过程、触…

matlab knnsearchidx,matlab查找最临近搜索knnsearch

[Idx,D] knnsearch(___) additionally returns the matrix D, using any of the input arguments in the previous syntaxes. D contains the distances between each observation in Y and the corresponding closest observations in X.使用先前语法中的任何输入参数返回矩阵…

php导出excel数据代码,phpspreadsheet导出数据到Excel的方法介绍(代码示例)

本篇文章给大家带来的内容是关于phpspreadsheet导出数据到Excel的方法介绍(代码示例)&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。之前我们使用PHP导出Excel数据时使用的是PHPExcel库&#xff0c;但是phpoffice已经官方宣…

linux php不能写文件内容,php 在linux系统下写出文件问题

最近写了一个简单的生成文件&#xff0c;服务器用的linux 但是在将文件写出到路径的时候就会写出一个其他的文件夹其中一些代码如下define("paddy",dirname(__FILE__));$gkrequest_uri();$filepathpaddy.$gk&#xff1b;createfile($filefath,$file)&#xff1b;//$f…

python求逆矩阵的方法,Python 如何求矩阵的逆

我就废话不多说了&#xff0c;大家还是直接看代码吧~import numpy as npkernel np.array([1, 1, 1, 2]).reshape((2, 2))print(kernel)print(np.linalg.inv(kernel))注意&#xff0c;Singular matrix奇异矩阵不可求逆补充&#xff1a;pythonnumpy中矩阵的逆和伪逆的区别定义&a…

liunx php的项目地址,在 Linux 配置 PHP 项目

在 Linux 配置 PHP 项目一, 搭建测试环境软件环境:(PHP 项目)PHP5.4Apache(httpd2.4)mysql5.7二, 安装1挂载:1. 把 iso 的镜像文件放到虚拟机 Linux 的 CD/ROM(在右下角 (网络适配器 / 桥接模式) 旁有个光盘, 点击连接, 之后页面出现一个光盘)2. 使用挂载命令, 把 CD/ROM 设备里…

php中改变函数路由,通过PHP重启路由器以更换IP(原创)

在采集大批量数据时常常会触发对方服务器的“自我保护”&#xff0c;请求过于频繁就限制访问。这时需要停留很长一段时间(十几分钟到几十分钟不等)才能恢复访问&#xff0c;这样采集数据的速度就受到非常大的限制。解决方法有两个&#xff1a;1 通过图片识别绕过验证码机制&…

krpano 场景切换 通知_一个基于Vulkan的异步场景加载设计

异步场景加载基本流程验证完成。此方法理论上只需要使用3个Vulkan的指令队列。对于移动平台上的Vulkan&#xff0c;指令队列数量极少&#xff0c;比如Adreno640只有3个指令队列可用。所以理论上这一设计也适合目前的移动平台使用。(1) graphic_queue&#xff1a;用于完成当前场…

如何查询linux服务器的网卡,Linux服务器如何查看有没有无线网卡

还是实验室那台服务器&#xff0c;连不上网。有没有界面&#xff0c;所以想着如何用一些命令来链接上热点。当然&#xff0c;在Linux下链接wifi没有win下那么一点就好了&#xff01;首先我们需要的基本条件就是&#xff1a; 服务器上有无线网卡。[roottomato2 ~]# iwconfiglo n…

python的多行语句可以使用反斜杠_python 为什么不用分号作终止符?

作者&#xff1a;豌豆花下猫 来源&#xff1a;Python猫一般而言&#xff0c;编程语言中使用分号“;”来实现两种目的&#xff1a;作为语句分隔符&#xff1a;使用分号来分隔语句&#xff08;statement&#xff09;&#xff0c;这样就能在一行代码中书写多条语句&#xff08;一行…

linux svn 备份脚本,SVN热备份脚本

SVN热备份脚本2011-08-03 徐磊#!/bin/sh########################################################## Script to do incremental rsync backups# modidfy: wanjie.info# date: 2010/06/04# 这个脚本不是xulei写的&#xff0c;我只是拿来主义&#xff0c;当然如果大家看不明白…

linux 关闭scp服务器,Linux系统如何关闭scp和sftp命令

Linux系统如何关闭scp和sftp命令。sftp介绍sftp是Secure File Transfer Protocol的缩写&#xff0c;安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能scp介绍两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方…

linux db2 归档,DB2的归档模式设置方法

当做在线备份&#xff0c;即加上online参数后&#xff0c;可以看到如下告警&#xff1a;[db2inst1localhost backup]$ db2 backup db sample online to /dev/nullSQL2413N Online backup is not allowed because the database is not recoverableor a backup pending condition…

css提取页面元素唯一性_下面这个函数,能够获取一个元素的任意 CSS 属性值。...

在对网页进行调试的过程中&#xff0c;经常会用到js来获取元素的CSS样式&#xff0c;方法有很多很多&#xff0c;现在仅把我经常用的方法总结如下&#xff1a;1. obj.style&#xff1a;这个方法只能JS只能获取写在html标签中的写在style属性中的值(style”…”)&#xff0c;而无…

linux+cp+-rdf,简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)

本文主要通过python实例讲解基于RDF和SPARQL的KBQA系统的构建。该项目可在python2和python3上运行通过。注&#xff1a;KBQA即是我们通常所说的基于知识图谱的问答系统。这里简单构建的EasyKBQA&#xff0c;数据来源于网络&#xff0c;源码地址看下面补充说明。目录&#xff1a…

变形监测期末复习_寒假即将来临,中小学期末考试时间是什么时候?

2019年下学期也快结束&#xff0c;各个区的中小学考试时间安排已经公布了。今年&#xff0c;初二将首次进行全市统考&#xff0c;统考的意义重大&#xff0c;希望家长们可以督促孩子们重视起来&#xff0c;考出好成绩!下面&#xff0c;让我们来看一下2019下学期深圳各区中小学期…

为什叫c语言,为什么c语言叫c语言?

1972年&#xff0c;美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言&#xff0c;他取了BCPL的第二个字母作为这种语言的名字&#xff0c;这就是C语言。1973年初&#xff0c;C语言的主体完成。Thompson和Ritchie用它完全重写了UNIX。随着UNIX的发展&…