Thinkphp添加图片全屏水印
先看最终效果图:
1、在common.php里定义一个全局方法,代码如下:
<?php
/*** 添加图片全屏水印* $sourcePath 源图片路径* $logoPath 水印logo路径
* $savePath 添加水印后图片的保存路径*/
function addImageWater($sourcePath,$logoPath,$savePath){$im = imagecreatefromstring(file_get_contents($sourcePath));//获取水印源$watermark = imagecreatefromstring(file_get_contents($logoPath));//获取图、水印 宽高类型list($bgWidth, $bgHight, $bgType) = getimagesize($sourcePath);list($logoWidth, $logoHight, $logoType) = getimagesize($logoPath);//定义平铺数据$x_length = $bgWidth - 10; //x轴总长度$y_length = $bgHight - 10; //y轴总长度//创建透明画布 伪白色$opacity=20;$w = imagesx($watermark);$h = imagesy($watermark);$cut = imagecreatetruecolor($w,$h);$white = imagecolorallocatealpha($cut, 255,255,255,0);imagefill( $cut, 0, 0, $white );//整合水印imagecopy($cut, $watermark, 0, 0, 0, 0, $w, $h);//循环平铺水印for ($x = 0; $x < $x_length; $x++){for ($y = 0; $y < $y_length; $y++) {imagecopymerge($im, $cut, $x, $y, 0, 0, $logoWidth, $logoHight, $opacity);$y += $logoHight;}$x += $logoWidth;}//header("Content-type:image/png");imagejpeg($im,$savePath);
}
2、在控制器里,上传文件的同时调用添加水印的方法:
<?php
private function uploadImg() {//保存图片的路径$path = ROOT_PATH . 'public/uploads/';$file = request()->file("file");if($file) {//限制只能上传2MB图片$info = $file->rule(function() {return md5(microtime(true));})->validate(['size'=>1024*1024*2,'ext'=>'jpg,png,gif,jpeg'])->move($path);if($info) {$filename = $info->getSaveName();$sourcePath = $path.$filename;//原图全路径$logoPath=ROOT_PATH.'public/static/img/water.png';//水印logo图片路径//添加水印(自动覆盖原图)addImageWater($sourcePath,$logoPath,$sourcePath);//保存图片的路径,存入数据库$savepath='/uploads/'.$filename;}unset($info);}unset($file);}
补充说明:
水印图片是png格式的,自己在透明背景图上PS文字,想让水印倾斜,那么就调整文字角度,我的水印logo图片是这样的:
宽度240像素,高度100像素
Thinkphp添加图片全屏水印相关推荐
- php分析图片中水印的位置,thinkphp添加图片、文字水印 自定义位置等
只添加文字水印 //生成带水印的图片 $image = new \Think\Image(); //定义位置 $path="./Upload/water/".$time." ...
- 微信小程序页面添加背景图,图片全屏显示
前言 微信的wxss里面不允许使用使用 background: url(),只能另外找方法进行背景图片显示. 方法 1.wxss页面里面设置页面的全屏宽高,以及view添加宽高 page{height ...
- android从九宫格全屏预览,仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图...
AssNineGridView 仿微信朋友圈展示图片的九宫格图片展示控件,支持点击图片全屏预览大图(可自定义). 写在前面 这是一个九宫格控件,本来是很久之前就写好了,现在才开源出来,也是看了很多优秀 ...
- css 全屏显示一张图片_css 如何让图片全屏的问题
1:一个很小的条状图,通过repeat后,形成一个很规则的大图背景. 但是css3出现以后,这个情况被改善了.background-size 属性可以让我们之前的希望成真.而且这个属性在firefox ...
- html加入图片如何自动平铺,html怎么设置背景图片全屏平铺?
html怎么设置背景图片全屏平铺? 1.新建一个html文档. 2.设置一下HTML的框架,然后把图片设置在同一个文件夹里面. 3.加入,这样可以有样式设置. 4.因为背景设置在主体,所以还要定义为b ...
- php全屏水印代码,zblogPHP全屏水印插件防盗图神器上线
zblogPHP全屏水印,防盗图神器,小插件,大作用! zblogPHP全屏水印插件购买: zblog应用中心价格¥39.8,联系本站管理购买立减5元---> 插件特色/介绍: 1,为图片加上全 ...
- uniapp 背景图片全屏显示在整个页面
要让uniapp中的背景图片全屏,可以在<style>标签中添加以下样式: page {background-image: url('/static/bg.jpg');background ...
- html怎么设置背景图 一张图平铺,html怎么设置背景图片全屏平铺?_WEB前端开发...
ps画笔工具快捷键是什么?_WEB前端开发 ps画笔工具的快捷键是"B":默认使用前景色绘图,通过设置后可以多种色彩一起绘制.ps的画笔分为了4类:常规画笔.干介质画笔.湿介质画笔 ...
- js大屏导出图片_超大图片全屏动态展示js插件
intense-images是一款非常实用的超大图片全屏动态展示js插件.该图片查看插件可以全屏显示超大图片,可以使用鼠标来和图片进行交互,上下左右移动鼠标会相应的移动图片,对于超大图片的展示是非常好 ...
- 手机端点击图片全屏预览
<!doctype html> 手机端点击图片全屏预览 <div class="category"><img src="1.jpg" ...
最新文章
- 【百度飞浆】RCNN系列算法优化策略与案例
- 先排序,再限定记录数,然后计算指定字段的总和
- 中国区块链开发者的热血时代来临!
- SpringBoot动漫弹幕网站 cartoon.liuyanzhao.com
- Stata15-Unicode:一次性转码解决中文乱码问题
- 《熊出没原始时代》总导演丁亮:爱与勇气 穿越古今
- 计算机光驱里有硬盘,笔记本电脑光驱位装机械硬盘有以下危害
- windows10下F1-F11快捷键及window+Dor+E快捷键打开关闭控制
- 聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传
- 中国云计算产业发展白皮书
- [软件工程]关于调查报告的响应和看到张恂的批评
- PDF如何合并,PDF文件合并的技巧
- .class .class 和 .class.class 和 .class>.class 比较
- 第0期-通过hao123爬取导航网站
- 【完善】微信餐厅点单小程序+后台管理系统的设计与实现(python实现)
- 如何改善自己的语言表达能力?
- centos7搭建owncloud私有云
- 求asinx+bcosx的不定积分
- 什么是CPC认证,现在亚马逊那边都需要提供CPC认证怎么办
- 小册上新 | 如何使用掘金社区
热门文章
- 给html标签加上鼠标划过小手样式
- Axial Attention 和 Criss-Cross Attention及其代码实现
- 肯德尔系数怎么分析_如何通过修改数据提高肯德尔系数?
- 打开360浏览器显示无法连接服务器错误,最近360浏览器老是无法打开网页,提示错误如图,但是只要刷新就可以打开了,这是怎么回事?...
- win7与internet时间同步出错_时间同步出错,教您时间同步出错
- js拖拽(二)仿iGoogle自定义首页模块拖拽
- word脚注、尾注小技巧|怎么删除尾注的横线|怎么快速删除页眉的横线|怎么快速将尾注和脚注转为带方括号的格式
- 域名被抢注的知名案例有哪些?
- esxi 命令行格式化硬盘
- [案例2-3]超市购物小程序