iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >使用TP5.1 怎么为图片添加水印
  • 193
分享到

使用TP5.1 怎么为图片添加水印

2023-06-14 23:06:44 193人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关使用TP5.1 怎么为图片添加水印,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在 linux 和 Mac OS X 中可以运行如下命令:curl -s

这篇文章将为大家详细讲解有关使用TP5.1 怎么为图片添加水印,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

linuxMac OS X 中可以运行如下命令:

curl -sS https://getcomposer.org/installer | PHPmv composer.phar /usr/local/bin/composer

windows 中,你需要下载并运行 Composer-Setup.exe。具体的安装在这里就不详说了,安装完成Composer软件之后,就需要安装图片插件了,打开运行窗口(系统键+R),输入cmd,回车后,定位到自己的项目目录,然后运行:composer require topthink/think-image

安装完成后就可以进行下一步的工作了。

下面是我的部分代码,仅供大家参考。

【HTML】

<!DOCTYPE html><html><head>   <meta charset="UTF-8">   <title>{$site.company}会员管理系统</title>   <link rel="stylesheet" href="layui/CSS/layui.css">   <link rel="stylesheet" href="/css/main.css">   <script type="text/javascript" src="layui/layui.js"></script></head><body>   <div>       <div>           <label>照片上传</label>           <div>               <input type="text" name="face" id="face" placeholder="请上传照片">           </div>           <div style="width: 80px!important;">               <button type="button" id="face1">上传照片</button>           </div>       </div>       <div>           <div>               <div>                   <div>                       <img src="/images/thumb.png" id="face_show" width="100px">                       <p id="faceText"></p>                   </div>               </div>           </div>       </div>       <div>           <div>               <input type="button" lay-submit="" lay-filter="add" value="提交">           </div>       </div>   </div>   <script type="text/javascript">layui.use(['fORM','layer','upload','element'], function(){           $ = layui.Jquery;var form = layui.form,layer = layui.layer;var upload = layui.upload;var element = layui.element;//常规使用 - 普通图片上传var uploadInst = upload.render({               elem: '#face1',url: '{:url("uploadFile")}',before: function(obj){                   //预读本地文件示例,不支持ie8obj.preview(function(index, file, result){                       $('#face_show').attr('src', result); //图片链接(base64)});element.progress('demo', '0%'); //进度条复位layer.msg('上传中', {icon: 16, time: 0});}               ,done: function(data){                   //如果上传失败if(data.code > 0){                       layer.msg('上传成功');document.getElementById('face').value = data.path;$('#faceText').html(''); //置空上传失败的状态}else {                       layer.msg('上传失败',{icon:2});}               }               ,error: function(){                   //演示失败状态,并实现重传var demoText = $('#faceText');demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');demoText.find('.demo-reload').on('click', function(){                       uploadInst.upload();});}               //进度条,progress: function(n, index, e){                   element.progress('demo', n + '%'); //可配合 layui 进度条元素使用if(n == 100){                       layer.msg('上传完毕', {icon: 1});}               }           });form.on('submit(add)', function(data){               console.log(data);//发异步,把数据提交给php$.post('{:url(\'save\')}',$('form').serialize(),function(data){                   if(data.code == 1){                       layer.msg(data.msg);setTimeout(function(){parent.window.location.reload();},1000);}else{                       layer.alert(data.msg, {icon: 6});}               })               return false;});});</script></body></html>

【图片上传】

public function uploadFile(){   //获取上传文件信息   $file = request()->file('file');   //以在上传目录下面生成以当前日期为子目录,存放上传文件   $path = date("Ymd");   //以当前时间和100~1000之间的随机数作为文件名称   $filename = time().rand(100,1000);   //将上传的文件移动到指定目录下   $info = $file->move('uploadfile/'.$path.'/',$filename);   //验证图片并移动到指定目录   if ($info){       //返回上传成功提示信息       //获取图片的名字       $imgName = $info->getFilename();       $size = $info->getInfo('size');       //获取图片的路径       $photo1 ='/uploadfile/'.$path.'/'.$info->getSaveName();       return JSON(['code'=>1,'path'=>$photo1]);   }else{       //返回上传失败提示信息       return $file->getError();   }}

【水印类库】

namespace app\api\classes;use think\Image;class imgWaterClass{      public function imageWaterText($path,$text){       $img = ".".$path;       $image = Image::open($img);       $image->text($text,'./static/style/font/simsun.ttc',20,'#ffffff',9 ,"-10px")->save($img);       return $img;   }   public function imageWaterImg($path,$loGo){       $img = ".".$path;       $logo = ".".$logo;       $image = Image::open($img);       $image->water($logo,Image::WATER_SOUTHEAST)->save($img);       return $img;   }}

【后台程序处理】

public function save(){   $data = Request::param();   $water = new imgWaterClass();   $img_url = $data['face'];//需要添加水印的图片   $path = "/uploads/logo.png";//水印图片   $img = $water->imageWaterImg($img_url,$path);//添加水印图片   $img_text = $water->imageWaterText($img_url,'我是水印');//添加水印文字   if($img){       return ['code'=>1,'msg'=>'保存成功'];   }else{       return ['code'=>0,'msg'=>'保存失败'];   }}

关于使用TP5.1 怎么为图片添加水印就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用TP5.1 怎么为图片添加水印

本文链接: https://www.lsjlt.com/news/275685.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作