vue 使用 canvas 实现手写电子签名


Posted in Javascript onMarch 06, 2020

功能

  1. 兼容 PC 和 Mobile;
  2. 画布自适应屏幕大小变化(窗口缩放、屏幕旋转时画布无需重置,自动校正坐标偏移);
  3. 自定义画布尺寸(导出图尺寸),画笔粗细、颜色,画布背景色;
  4. 支持裁剪 (针对需求:有的签字需要裁剪掉四周空白)。
  5. 导出图片格式为 base64 ;
  6. 示例demo

安装

npm install vue-esign --save

使用

main.js 中引入

import vueEsign from 'vue-esign'
Vue.use(vueEsign)

页面中使用

必须设置 ref ,用来调用组件的两个内置方法 reset() 和 generate() 无需给组件设置 style 的宽高,如果画布的 width 属性值没超出父元素的样式宽度,则该组件的样式宽度就是画布宽度,超出的话,组件样式宽度则是父元素的100%; 所以只需设置好父元素的宽度即可;

<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<button @click="handleReset">清空画板</button> 
<button @click="handleGenerate">生成图片</button>
data () {
 return {
 lineWidth: 6,
 lineColor: '#000000',
 bgColor: '',
 resultImg: '',
 isCrop: false
 }
},
methods: {
 handleReset () {
 this.$refs.esign.reset()
 },
 handleGenerate () {
 this.$refs.esign.generate().then(res => {
 this.resultImg = res
 }).catch(err => {
 alert(err) // 画布没有签字时会执行这里 'Not Signned'
 })
 }
}

说明

属性 类型 默认值 说明
width Number 800 画布宽度,即导出图片的宽度
height Number 300 画布高度,即导出图片的高度
lineWidth 4 Number 画笔粗细
lineColor String #000000 画笔颜色
bgColor String 画布背景色,为空时画布背景透明, 支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red'
isCrop Boolean false 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分

两个内置方法,通过给组件设置 ref 调用:

清空画布

this.$refs.esign.reset()

生成图片

this.$refs.esign.generate().then(res => {
 console.log(res) // base64图片
}).catch(err => {
 alert(err) // 画布没有签字时会执行这里 'Not Signned'
})

有任何问题请到此提issue

vue 使用 canvas 实现手写电子签名

总结

到此这篇关于vue 使用 canvas 实现手写电子签名的文章就介绍到这了,更多相关vue 手写电子签名内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JAVASCRIPT 对象的创建与使用
Mar 09 Javascript
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
May 07 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
Sep 05 Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 Javascript
使用JS读秒使用示例
Sep 21 Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 Javascript
微信小程序日历/日期选择插件使用方法详解
Dec 28 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
js实现随机抽奖
Mar 19 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 #Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 #Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 #Javascript
javascript中可能用得到的全部的排序算法
Mar 05 #Javascript
js的Object.assign用法示例分析
Mar 05 #Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 #Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 #Javascript
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
js操作checkbox遇到的问题解决
2013/06/29 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python如何进行时间处理
2020/08/06 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
大学生军训自我评价分享
2013/11/09 职场文书
代理人委托书
2014/09/16 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
介绍长城的导游词
2015/01/30 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL
浅谈python中的多态
2021/06/15 Python
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python