vue pc端项目el-upload上传图片时加水印
html代码:
<a-uploadclass="avatar-uploader"list-type="picture-card":file-list="uploadFileList":custom-request="uploadDoneHandle":before-upload="beforeUpload":remove="removeHandle"v-decorator="['path', { rules: formValidateRules.path }]"@preview="previewHandle"@change="uploadChangeHandle"
><div v-if="uploadFileList.length < 1"><a-icon :type="uploadLoading ? 'loading' : 'plus'" /></div>
</a-upload>
画布这时就需要在beforeUploadHandle这个方法中去生成水印,然后通过后端上传接口,把图片传给后端,然后再接收后端返回的数据
下面是beforeUploadHandle方法
beforeUpload (file) {return new Promise(resolve => {const reader = new FileReader()reader.readAsDataURL(file) // file转base64reader.onload = e => {const canvas = document.createElement('canvas')const img = new Image()img.src = e.target.resultimg.onload = () => {//图片加载后再添加水印,否则可能报错let width = img.widthlet height = img.heightcanvas.width = widthcanvas.height = heightconst ctx = canvas.getContext('2d') // 绘制2d图形ctx.drawImage(img, 0, 0, width, height)var basePx = canvas.width//字体大小 照片添加水印var fontSize = basePx / 20 //水印文字尺寸ctx.shadowColor = 'rgba(0, 0, 0,1)'ctx.shadowOffsetX = 3 //水印文字阴影ctx.shadowOffsetY = 3ctx.shadowBlur = 5ctx.rotate((-20 * Math.PI) / 180) //水印文字倾斜ctx.font = fontSize + 'px 微软雅黑'ctx.fillStyle = 'rgba(255,255,255,0.6)' //水印透明度var watermark =sessionStorage.getItem('id') +'|' +sessionStorage.getItem('name') +'|' +sessionStorage.getItem('orgName') //水印文字内容var watermarkSplit = watermark.split('|')let w = 1 //横向绘制次数let h = 4 //纵向绘制次数'//水印的总绘制次数let num = Math.round(w * h)for (let i = 0; i < num; i++) {if (i < w) {ctx.fillText(watermarkSplit[0],(width / 3) * i,height / 2 - 2.7 * fontSize)ctx.fillText(watermarkSplit[1],(width / 3) * i,height / 2 - 1.5 * fontSize)ctx.fillText(watermarkSplit[2],(width / 3) * i,height / 2 - 0.5 * fontSize)} else if (i >= w && i < w * 2) {ctx.fillText(watermarkSplit[0],(width / 3) * (i - w),height - 2.7 * fontSize)ctx.fillText(watermarkSplit[1],(width / 3) * (i - w),height - 1.5 * fontSize)ctx.fillText(watermarkSplit[2],(width / 3) * (i - w),height - 0.5 * fontSize)} else if (i >= w * 2 && i < w * 3) {ctx.fillText(watermarkSplit[0],(width / 3) * (i - w * 2),height * 1.5 - 2.7 * fontSize)ctx.fillText(watermarkSplit[1],(width / 3) * (i - w * 2),height * 1.5 - 1.5 * fontSize)ctx.fillText(watermarkSplit[2],(width / 3) * (i - w * 2),height * 1.5 - 0.5 * fontSize)}}var dataBase64 = canvas.toDataURL(file.type) // 输出压缩后的base64// base64转fileconst arr = dataBase64.split(',')const mime = arr[0].match(/:(.*?);/)[1]const bstr = atob(arr[1])let n = bstr.lengthconst u8arr = new Uint8Array(n)while (n--) {u8arr[n] = bstr.charCodeAt(n)}const files = new File([new Blob([u8arr], { type: mime })],file.name,{ type: file.type })files.uid = file.uidresolve(files)}}})/* const { result } = fileCheckForImage(file)return result */},
相关文章:
vue pc端项目el-upload上传图片时加水印
html代码: <a-uploadclass"avatar-uploader"list-type"picture-card":file-list"uploadFileList":custom-request"uploadDoneHandle":before-upload"beforeUpload":remove"removeHandle"v-decorat…...
ubuntu中redis+mysql安装使用
pip -V 回车(大写V):python包库安装路径 python -m site: python查找路径 1、redis ubuntu安装redis System has not been booted with systemd as init system (PID 1). Cant operate;该问题是systemctl start redis报错&#…...
若依-plus-vue启动显示Redis连接错误
用的Redis是windows版本,6.2.6 报错的主要信息如下: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method redisson threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect t…...
【C++11智能指针】
c智能指针 手动管理内存很容易造成内存泄漏,现代c的智能指针可以在很大程度上帮我们缓解这个问题,降低我们的手动管理内存的心智负担,智能指针有好几种,比如shared_ptr、unique_ptr还有weak_ptr 共享指针shared_ptr 共享指针会…...
如何实现Excel中多级数据联动
摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间的数据联动&…...
使用Pytest集成Allure生成漂亮的图形测试报告
目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告 资料获取方法 前言 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架ÿ…...
opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)
矩特征(Moments Features)是用于图像分析和模式识别的一种特征表示方法,用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以…...
什么是CSS Grid布局?什么是Flexbox布局?它们两者有什么不同?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS Grid布局⭐ Flexbox布局⭐ 不同之处⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web…...
Centos中pip install mysqlclient失败
pip install mysqlclient 错误详情如下 pip install mysqlclient Looking in indexes: http://mirrors.tencentyun.com/pypi/simple Collecting mysqlclient Using cached http://mirrors.tencentyun.com/pypi/packages/de/9c/b176826e8994551ce826404dab97e305a4bb76c8b0a4e0…...
arcgis更改图层字段名脚本
话不多说,上脚本源码,复制黏贴即可 #-*- coding:utf-8 -*- __author__ lumen import arcpy #输入图层 InputFeature arcpy.GetParameterAsText(0) #原始字段 oldField arcpy.GetParameterAsText(1) # 获取原始字段类型 oldFieldType desc arcpy.…...
Android 13 MTK平台添加自定义按键,以及CTS问题解决
添加自定义按键流程 一般来说上层添加以下几处修改 驱动层的键值上报,让驱动处理好即可 frameworks / base/core/java/android/view/KeyEvent.java public static final int KEYCODE_DEMO_APP_4 = 304;/** add by songhui for fingerprint Key code */+ public static fina…...
深入了解 Postman Test 校验的使用方法
Postman 是一个广泛使用的 API 开发工具,它允许开发人员测试 API 的各个方面,包括请求、响应、身份验证等等,其中最常用的功能之一就是 Test 校验。那今天就一起来看看 Postman 的 Test 校验该如何使用。 Test 校验是什么? Test…...
岛屿的最大面积(力扣)递归 JAVA
给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值为 1 的…...
MySQL入门学习教程(一)
mysql简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅…...
【CTF-web】修改请求头(XFF)
题目链接:https://ctf.bugku.com/challenges/detail/id/79.html 随意输入后可以看到需要本地管理员登录,得知这是一道需要修改XFF头的题。 XFF即X-Forwarded-For,该请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的…...
springboot mongodb 配置多数据源
我想要的效果是,一个类统一管理多数据源,我传个参数进去,它就能返回我对应的mongotemplate 但是根据"mongbodb 多数据源"的关键词,找不到我想要的效果。 网上大多都是明确知道自己是几个数据源,然后每个数…...
Python3 安装、环境变量配置、PyCharm新建Python项目
一、安装包下载 Pyhton官网下载>>最新稳定版的安装包: 找到合适的版本进行下载: 如果下载较慢,此处提供一个3.10.11的稳定版本的安装包: 链接:https://pan.baidu.com/s/16GnWjkGFuSfWfaI9UVX8qA?pwd4u5o 提取…...
用python来爬取某鱼的商品信息(2/2)
目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭(可选) 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie(出错) 导入cookie(修改后&…...
【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(上)
前提介绍 Feign是SpringCloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用。由于遗留原因,某些项目中,整个系统并不是SpringCloud项目,甚至不是Spring项目,而使用者关注的重点仅仅是简化http调…...
React Native Vector Icons的使用
介绍 React Native Vector Icons是一个用于在React Native应用中使用矢量图标的库。它提供了许多常见的图标集,如FontAwesome、Ionicons等。 使用 首先,你需要在你的React Native项目中安装React Native Vector Icons库。可以使用以下命令进行安装&…...
5分钟快速上手:用Python高效下载Google卫星地图的终极指南
5分钟快速上手:用Python高效下载Google卫星地图的终极指南 【免费下载链接】google-map-downloader Small tools to download Google maps satellite image for a given extent & zoom level to a TIFF file with geographical coordinates and speeding it up …...
【限时公开】某千亿级AI平台未披露的异常处理协议v3.2:支持跨Agent协作恢复的分布式Saga-LLM混合事务模型
第一章:AIAgent架构中的异常处理机制 2026奇点智能技术大会(https://ml-summit.org) 在AIAgent系统中,异常并非边缘场景,而是核心运行态的固有组成部分。当Agent执行任务链(如“检索→推理→工具调用→响应生成”)时&…...
零基础转行大模型选哪个岗位方向最易上手?常见问题全解析
零基础转行大模型选哪个岗位方向最易上手?常见问题全解析 标签:#人工智能、#深度学习、#自然语言处理、#神经网络、#机器学习、#计算机视觉、#ai ### 先打破一个误区:大模型≠只有算法岗,普通人也能进### 大模型岗位:哪…...
3步实现Chrome浏览器与KeePass密码库无缝同步
3步实现Chrome浏览器与KeePass密码库无缝同步 【免费下载链接】ChromeKeePass Chrome extensions for automatically filling credentials from KeePass/KeeWeb 项目地址: https://gitcode.com/gh_mirrors/ch/ChromeKeePass 你是否厌倦了每次登录网站都要手动输入密码&a…...
多模态RAG:让AI看懂图也能读懂话
不只是文字,还能“看图说话” 你有没有想过,AI不仅能读文字,还能看图、听声音,甚至把它们串起来理解?这背后就有“多模态RAG”的功劳。传统RAG(检索增强生成)主要处理文本——你问一个问题&…...
告别目标检测框!用ALBEF和ViT-BERT轻松搞定多模态图文匹配(附代码实战)
无需目标检测框的跨模态革命:ALBEF实战图文匹配新范式 当我在去年尝试构建一个电商图文检索系统时,最头疼的不是模型调参,而是处理那些密密麻麻的目标检测框标注——每个商品都要精确标注位置和属性,团队为此投入了三周时间却只完…...
如何用Python的NLTK库玩转FrameNet语义分析(附代码示例)
如何用Python的NLTK库玩转FrameNet语义分析(附代码示例) 自然语言处理(NLP)领域的一个核心挑战是如何让机器真正理解人类语言背后的含义。传统的关键词匹配或语法分析往往停留在表面,而FrameNet提供的框架语义学方法&a…...
WarcraftHelper终极指南:5分钟让魔兽争霸3完美适配现代电脑
WarcraftHelper终极指南:5分钟让魔兽争霸3完美适配现代电脑 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代系统上的…...
如何快速掌握vxe-table插件开发:5个实用技巧与完整指南
如何快速掌握vxe-table插件开发:5个实用技巧与完整指南 【免费下载链接】vxe-table vxe table 支持 vue2, vue3 的表格解决方案 项目地址: https://gitcode.com/gh_mirrors/vx/vxe-table 你是否曾在Vue项目中为表格功能开发而烦恼?尝试过多种表格…...
终极TorchServe性能优化指南:10个技巧让模型推理速度提升300%
终极TorchServe性能优化指南:10个技巧让模型推理速度提升300% 【免费下载链接】serve Serve, optimize and scale PyTorch models in production 项目地址: https://gitcode.com/gh_mirrors/serv/serve TorchServe是一个强大的PyTorch模型服务工具࿰…...
