【vue/uniapp】使用 smooth-signature 实现 h5 的横屏电子签名

通过github链接进行下载,然后代码参考如下,功能包含了清空、判断签名内容是否为空、生成png/jpg图片等。

签名效果:
请添加图片描述
预览效果:
请添加图片描述
下载 smooth-signature 链接:https://github.com/linjc/smooth-signature

代码参考:

<template><div><div class="btn"><button class="item" @click="submit">确定</button><button class="item" @click="clear">清空</button></div><canvas /><u-toast ref="uToast" /></div>
</template><script>
import SmoothSignature from "smooth-signature";
export default {name: "handWriteSign",data() {return {canvas: '',options: {},signature: ''}},mounted() {this.initSignature()},methods: {initSignature() {// 初始化this.canvas = document.querySelector("canvas");// 配置项this.options = {// 画布在页面实际渲染的宽度、高度width: window.innerWidth,height: window.innerHeight - 100,// 画布缩放scale: 2,minWidth: 4,maxWidth: 10,color: '#000',bgColor: '#fff'};this.signature = new SmoothSignature(this.canvas, this.options)},clear() {this.signature.clear()},submit() {// 判断签名内容是否为空const isEmpty = this.signature.isEmpty();if (isEmpty) {return this.$refs.uToast.show({title: '内容为空,请签名',type: 'error'})}// 生成旋转后的新画布 -90/90/-180/180const canvas1 = this.signature.getRotateCanvas(-90)const pngUrl = canvas1.toDataURL()// let signPic = this.signature.getPNG()console.log('signPic', pngUrl);uni.setStorageSync('signPic', pngUrl)if (pngUrl) {uni.navigateBack({delta: 1, // 返回的页面数,如果是1表示返回上一级});}},},
};
</script><style lang="scss">.btn {display: flex;align-items: center;height: 80px;.item {transform: rotate(90deg);border-radius: 8px;border: 1px solid #f0f0f0;}}
</style>

然后在要展示签名的页面:

// 每次进入页面时执行
onShow() {this.img1 = uni.getStorageSync('signPic')
},
<image :src="img1" style="width: 100%;" mode="widthFix"></image>

补充一下,最后我还遇到了一个问题,在 canvas 画布里莫名地生还成了一个div,这样导致了在这个 div 区域,手写的笔迹有时候会写不上,是个偶然的现象,但是写不上的时候真的很讨厌
请添加图片描述
去也去不掉,后来直接在组件样式里加了:

::v-deep div {display: none !important;
}

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

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

相关文章

数据库建模

了解了数据的设计思想&#xff0c;那对于数据库表的表设计应该怎么做呢&#xff1f;答案是数据库建模。 数据库建模&#xff1a;在设计数据库时&#xff0c;对现实世界进行分析、抽象、并从中找出内在联系&#xff0c;进而确定数据库的结构。它主要包括两部分内容&#xff1a;确…

Node.js发票识别+发票查验API、让繁琐查验成为过去式

互联网时代&#xff0c;随着电子商务的蓬勃发展&#xff0c;无论是纸质增值税发票还是电子增值税发票使用量都在激增&#xff0c;也正因如此&#xff0c;让部分不法分子看到了“商机”&#xff0c;利用伪造、变造发票进行逃税、骗税等违法行为&#xff0c;严重扰乱了市场秩序&a…

RHCSA 模拟题

系统环境 系统IP地址node1.example.com192.168.122.10node2.example.com192.168.122.20 在node1.example.com上执行以下任务 一、配置网络设置 将 node1 配置为具有以下⽹络配置&#xff1a; 1、主机名&#xff1a;node1.example.com 2、IP 地址&#xff1a;192.168.122.…

极狐GitLab 如何在 helm 中恢复数据

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在极狐GitLab …

查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

[CSS]样式属性+元素设置

哎呀&#xff0c;好多东西&#xff0c;根本记不住&#xff0c;更多的还是边用边记吧&#xff0c;这里的代码就当使用范例&#xff0c;但其实如果可以让gpt应该会更好&#xff0c;哎学吧&#xff0c;反正记得住当然更好 文本 属性名描述word-break单词换行。取值如下&#xff1…

[自研开源] MyData数据融合平台 诚邀试用

MyData &#xff0c;一个旨在简化 Web 应用之间数据对接的工具&#xff0c;提高日常工作效率&#xff0c;如其名“我的数据” 旨在让用户更好的掌控和管理数据。 v1.0 的目标是&#xff1a;针对多应用之间数据集成的场景&#xff0c;为开发人员提供更安全、更方便的对接集成方…

Elasticsearch8.x 设置密码

文章目录 一、环境说明二、使用elasticsearch-reset-password工具修改1、elasticsearch-reset-password工具位置2、设置密码 一、环境说明 elasticsearch版本&#xff1a;8.13.0 系统版本&#xff1a;Ubuntu 18.04.6 二、使用elasticsearch-reset-password工具修改 1、elast…

Ubuntu22.04虚拟环境安装CUDA10.1, CUDNN和pytorch

不同的神经网络有不同的配置&#xff0c;有些从前公开的github项目&#xff0c;一些包升级之后的版本缺少相关的函数&#xff0c;老版本又不兼容&#xff0c;只能在虚拟环境中重新安装环境。 首先理顺一下CUDA&#xff0c;CUDNN&#xff0c;cudatoolkit的关系。安装CUDA就是安…

【Java程序员面试专栏 综合面试指南】5年资深程序员面试指南

基础知识对于5年内工作经验的同学考察相对比较多。包括编程语言、计算机网络、操作系统、设计模式、分布式知识、MySQL、Redis这种。其中随着年限的增长,基础知识考察的会越来越少,例如操作系统基本上只在学生阶段考察,计算机网络对于5年经验来说也考察的相对较少。5年以上对…

CSP 比赛经验分享

中国软件专业技术资格&#xff08;水平&#xff09;考试&#xff08; CSP-S &#xff09;是一项旨在评价软件和信息技术 专业人员专业技术水平的考试。对于参加过 CSP 比赛的人来说&#xff0c;这是一个展示 自己编程能力、逻辑思维和解决问题能力的好机会。下面是一些基于…

选择成为一名程序员的原因

选择成为一名程序员的原因通常是一个综合考虑的结果,可能包括个人兴趣、职业发展前景以及其他因素。 1. 兴趣是主导因素 对编程和技术有着浓厚的兴趣是许多人选择这个职业的主要原因。编程需要逻辑思维、创造力和解决问题的能力,对于那些喜欢这种挑战并从中获得满足感的人来说…

ol.layer.Vector 的postrender和map的postrender事件有什么区别

ol.layer.Vector 的 postrender 事件和 ol.Map 的 postrender 事件在 OpenLayers 这个 JavaScript 库中都是事件&#xff0c;但它们针对的对象和触发的时机有所不同。 ol.layer.Vector 的 postrender 事件 ol.layer.Vector 的 postrender 事件是针对单个矢量图层&#xff08;…

优化策略:企业海量文件传输事件处理(上)

在当今快速发展的商业环境中&#xff0c;企业的数据量正以前所未有的速度增长。这种增长不仅带来了机遇&#xff0c;也带来了挑战&#xff0c;特别是在文件传输任务的管理上。文件传输是企业日常运营中不可或缺的一部分&#xff0c;它涉及到大量的数据流动和信息交换。因此&…

ubuntu下使用ndk编译libevnet

libevent源码编译 源码的获取 http://www.ffmpeg.club/libevent.html 这是看夏老师课堂获取的&#xff0c;以后也要学他的课&#xff0c;所以就用整个源码编译&#xff0c;减少问题出现 编译静态库 https://blog.csdn.net/weixin_28927079/article/details/109380748 大概上是…

0 idea搭建springboot项目

1 2 3 4 5 配置文件 application.yaml server:servlet:context-path: /app #项目名controller //注入到spring容器 Controller public class HelloController {GetMapping("hello")ResponseBodypublic String hello(){return "Hello,SpringBoot";} }启…

【chatGPT】我:在Cadence Genus软件中,出现如下问题:......【3】

我 在Cadence Genus中&#xff0c;upf文件是什么&#xff0c;有什么作用 ChatGPT 在Cadence Genus中&#xff0c;UPF&#xff08;Unified Power Format&#xff09;文件是一个用于指导和描述设计的电源意图的标准文件格式。这个格式由Accellera制定&#xff0c;旨在提供一种方…

【MATLAB 预测算法教程】_1粒子群算法优化BP神经网络预测 - 教程和对应MATLAB代码

本文以MATLAB自带的脂肪数据集为例,将数据保存在EXCEL工作簿内,方便替换数据使用,以下介绍粒子群算法优化BP神经网络预测的MATLAB代码编写,主要流程包括1. 读取数据 2.划分训练集和测试集 3.归一化 4.确定BP神经网络的隐含层最优节点数量 5. 使用粒子群算法优化BP的神经网络…

[数据概念|数据技术]智能合约如何助力数据资产变现

“ 区块链上数据具有高可信度&#xff0c;智能合约将区块链变得更加智能化&#xff0c;以支持企业场景。” 之前鼹鼠哥已经发表了一篇文章&#xff0c;简单介绍了区块链&#xff0c;那么&#xff0c;智能合约又是什么呢&#xff1f;它又是如何助力数据资产变现的呢&#xff1f;…

Swagger转换成Excel文件

1、添加swagger解析依赖包&#xff1a; <dependency><groupId>io.swagger.parser.v3</groupId><artifactId>swagger-parser</artifactId><version>2.1.12</version></dependency>2、示例代码&#xff1a; package com.rlclou…