用uniapp在微信小程序实现画板(电子签名)功能

目录

一、效果展示

二、插件推荐与引入

三、代码具体应用

四、h5端将base64转换为url

一、效果展示

二、插件推荐与引入

手写板、签字板;<zwp-draw-pad /> - DCloud 插件市场

这个在微信小程序引入时内容简单,且涉及的方法很多,可满足撤销、删除、保存、画笔颜色修改等操作。其中保存的图片结果是base64,可借助微信小程序的转换方法将其转换为url临时地址。

三、代码具体应用

	<view class="content">
		<zwp-draw-pad :width="w" :height="h" ref="drawPad" />
		<view class="sa" @click="onCancel()">
			撤销
		</view>
		<view class="sa" @click="onSave()">
			保存
		</view>
		<view class="sa" @click="onClear()">
			清除
		</view>
	</view>
<script>
import { base64src } from "../../utils/base64src.js"; // 后面引用路径为base64src.js文件路径
	export default {
		data() {
			return {
				w: 375,
				h: 375,
			}
		},
		methods: {
			onSave() {
				this.$refs.drawPad.save().then(res => {
					console.log('保存图片的地址', res.tempFilePath)
					base64src( res.tempFilePath, (res) => {
						console.log(res); // 转换后的临时连接路径
					});
				})
			},
			onCancel() {
				this.$refs.drawPad.back()
			},
			onClear() {
				this.$refs.drawPad.init()
				this.$refs.drawPad.clearCache()
			},
		}
	}
</script>

其中通过this.$refs.drawPad.originData.length 是否>0来判断是否在画板上进行了签名

借助工具函数,使用引入即可!

const base64src = (base64data, fun) => {
  const base64 = base64data; //base64格式图片
  const time = new Date().getTime();
  const imgPath = wx.env.USER_DATA_PATH + "/poster" + time + "share" + ".png";
  //如果图片字符串不含要清空的前缀,可以不执行下行代码.
  const imageData = base64.replace(/^data:image\/\w+;base64,/, "");
  const file = wx.getFileSystemManager();
  file.writeFileSync(imgPath, imageData, "base64");
  fun(imgPath);
};
export { base64src };

四、h5端将base64转换为url

			base64ImgtoFile (dataurl, filename = 'file') { 
			      const arr = dataurl.split(',')
			      const mime = arr[0].match(/:(.*?);/)[1]
			      const suffix = mime.split('/')[1]
			      const bstr = atob(arr[1])
			      let n = bstr.length
			      const u8arr = new Uint8Array(n)
			      while (n--) { 
			        u8arr[n] = bstr.charCodeAt(n)
			      }
			      return new File([u8arr], `${ filename}.${ suffix}`, { 
			        type: mime
			      })
			    },
let file = this.getBase64ImageUrl(res.tempFilePath) // 得到File对象(res.tempFilePath即为base64形式)
this.imgUrl = window.webkitURL.createObjectURL(file) || window.URL.createObjectURL(file) // imgUrl图片网络路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

张弛语言课奇幻剧配音,一场特殊的体验

在为奇幻剧进行配音时&#xff0c;配音艺术家要将自己投入到一个充斥着魔法、幻想生物和超自然现象的虚构世界中。奇幻剧侧重于构建一个超越现实的幻境&#xff0c;因此配音工作要求既要呈现角色的个性化特征&#xff0c;也要与剧中的奇幻氛围相得益彰。以下是进行奇幻剧配音的…

私域电商和裂变营销的商机在哪里?

微三云胡佳东认为&#xff1a;公域流量已衰退&#xff0c;私域电商和裂变营销即将引来新的趋势&#xff01;品牌和传统企业的战略方向应该开始布局“内容”&#xff0c;线上流量持续分化&#xff0c;裂变营销的方式又将是一场新的改革革命。 私域电商和裂变营销的商机在于降低获…

PTA-分类统计字符个数

本题要求实现一个函数&#xff0c;统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 函数接口定义&#xff1a; void StringCount( char s[] ); 其中 char s[] 是用户传入的字符串。函数StringCount须在一行内按照 letter 英文字母个数, blank 空格或回…

微信小程序其他环境都能显示在正式环境显示不出来

踩坑日记 用了uni.getImageInfo 用了uni.getImageInfo 本地开发环境&#xff0c;测试环境全都可以&#xff0c;就是更新到正式环境不显示。后面看代码百度了这个api发现图片所涉及的地址需要在小程序配置download域名白名单 https://uniapp.dcloud.net.cn/api/media/image.ht…

高通OTA升级非常规分区方法

高通OTA升级非常规分区方法 1. 高通LE OTA背景2. 高通LE OTA升级方案2.1 SDX12 OTA方案2.2 OTA升级TZ/RPM/Aboot OTA是一个通用述语&#xff0c;常见的解释为over the air。通过这一解释&#xff0c;OTA最开始的概念&#xff0c;是空中升级。后来&#xff0c;又衍生出了FOTA&am…

Confluence Server Webwork 预身份验证 OGNL 注入 (CVE-2021-26084)

漏洞描述 Confluence 是由澳大利亚软件公司 Atlassian 开发的基于 Web 的企业 wiki。 存在一个 OGNL 注入漏洞&#xff0c;允许未经身份验证的攻击者在 Confluence Server 或 Data Center 实例上执行任意代码。 漏洞环境及利用 搭建docker环境 Confluence搭建见前文 Atlas…

每日一题:LeetCode-105.从前序遍历与中序遍历构造二叉树

每日一题系列&#xff08;day 02&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

配置华为云镜像加速器

登录华为云官网&#xff0c;点击控制台 在服务列表里面寻找swr服务 点击镜像中心&#xff0c;点击镜像加速器 {"registry-mirrors": [ "https://301dc05233c6419b810bdb22135af9eb.mirror.swr.myhuaweicloud.com" ]}配置镜像加速器 vim /etc/docker…

数据中心运维管理:从人工到智能需要走几步?

一切的变化来自于数据中心规模、复杂度、设备多样性的挑战&#xff0c;将运维平台的重要性推向历史高点。 此外&#xff0c;基于业务连续性方面的考虑&#xff0c;分布式数据中心成为越来越多客户的选择。 一、数据中心面临的挑战 运维管理分散&#xff0c;缺乏统一的管理 I…

基于C#实现赫夫曼树

赫夫曼树又称最优二叉树&#xff0c;也就是带权路径最短的树&#xff0c;对于赫夫曼树&#xff0c;我想大家对它是非常的熟悉&#xff0c;也知道它的应用场景&#xff0c;但是有没有自己亲手写过&#xff0c;这个我就不清楚了&#xff0c;不管以前写没写&#xff0c;这一篇我们…

Idea如何使用git将代码上传到多个远程仓库

废话不多说了&#xff0c;看图指南吧&#xff1b;大佬勿喷哈 打开你的项目找到你要上传代码到另外库中的代码&#xff0c;找到git把图中地址跟链接名称写完就可以进行上传时候的选择了最后就可以进行提交了&#xff0c;提交都一样

万宾科技智能井盖传感器使用方式,具有什么效果?

有问题的井盖可能导致人们在行走或驾驶时不经意地踩中或碰到&#xff0c;从而导致摔倒、扭伤或交通事故等安全事故。有问题的井盖可能会破坏井盖和下方污水管道之间的密封性&#xff0c;导致污水泄漏。这不仅会对环境造成污染&#xff0c;还可能对公共卫生和健康构成威胁。 将智…

csapp 深入理解计算机系统 bomb lab(2)phase_2

bomblab及phase_1 同phase_1可以查看phase_2的汇编代 call 40145c <read_six_numbers>可以看出phase_2调用了read_six_numbers&#xff0c;然后把1和 (%rsp)比较&#xff0c;如果不是1&#xff0c;就会调用<explode_bomb>函数。 %rsp 存放地址&#xff0c;(%r…

获取ip属地(ip2region本地离线包-超简单)

背景 最近有涉及要显示ip属地&#xff0c;但我想白嫖&#xff0c;结果就是白嫖的api接口太慢了&#xff0c;要延迟3到4秒左右&#xff0c;很影响体验&#xff0c;而且不一定稳定。 结果突然看到了这个【ip2region】开源项目&#xff0c;离线识别ip属地&#xff0c;精度自己测…

字符串匹配算法——KMP

有文本串aabaabaaf&#xff0c;模式串aabaaf问文本串中是否出现过模式串 暴力解法 最不用动脑子的&#xff0c;直接两层for循环&#xff0c;逐个匹配&#xff0c;匹配到不相等的值时把文本串后移一位&#xff0c;再重新比较。这种方法的复杂度是O(mn)&#xff0c;该方法低效的…

java--static的应用知识:单例设计模式

1.什么是设计模式(Design pattern) ①一个问题通常有n中解法&#xff0c;其中肯定有一种解法最优的&#xff0c;这个最优的解法被人总结出来了&#xff0c;称之为设计模式。 ②设计模式有20多种&#xff0c;对应20多种软件开发中会遇到的问题。 2.单例设计模式 确保一个类只…

【史上最细教程】服务器MySQL数据库完成主从复制

文章目录 MySQL完成主从复制教程准备&#xff1a;原理&#xff1a;步骤&#xff1a; 推荐文章 MySQL完成主从复制教程 主从复制&#xff08;也称 AB 复制&#xff09;就是将一个服务器&#xff08;主服务器&#xff09;的数据复制到一个或多个MySQL数据库服务器&#xff08;从…

windows根据已有的安卓签名文件获取MD5签名

windows根据已有的安卓签名文件获取MD5签名 0 现状 uniapp 本机号码一键登录需要MD5的&#xff0c;现有的签名文件但是只有SHA1和SHA256 查看SHA1和SHA256 keytool -list -v -keystore [你的.keystore文件]1 前提 已有生成签名文件的环境 搭建Openssl环境&#xff0c;设置…

Spring框架学习 -- 读取和存储Bean对象

目录 &#x1f680;&#x1f680; 回顾 getBean()方法的使用 根据name来获取对象 再谈getBean() (1) 配置扫描路径 (2) 添加注解 ① spring注解简介 ② 对类注解的使用 ③ 注解Bean对象的命名问题 ④ 方法加Bean注解 (3) Bean 注解的重命名 (4) 获取Bean对象 -- …

Linux---常用命令汇总

文章目录 关于目录操作的命令ls/llcdpwdmkdir 关于文件操作的命令touchechocatrmmvcpvim 关于查询操作的命令greppsnetstat 关于目录操作的命令 ls/ll ls : 列出当前目录下的目录和文件&#xff08;以行的展示形式&#xff09; ll &#xff1a; 列出当前目录下的目录和文件&…