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 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
jQuery满屏焦点图左右滚动特效代码分享
Sep 07 Javascript
javascript动态添加checkbox复选框的方法
Dec 23 Javascript
js中遍历Map对象的简单实例
Aug 08 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
Jan 16 Javascript
bootstrap组件之导航组件使用方法
Jan 19 Javascript
vue内置组件transition简单原理图文详解(小结)
Jul 12 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
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
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
深入理解Javascript中this的作用域
2014/08/12 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
前端性能优化及技巧
2016/05/06 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
python中的set实现不重复的排序原理
2018/01/24 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
Python设计密码强度校验程序
2020/07/30 Python
python实现扫雷游戏的示例
2020/10/20 Python
基于python实现坦克大战游戏
2020/10/27 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
Linux文件操作命令都有哪些
2015/02/27 面试题
假日旅行社实习自我鉴定
2013/09/24 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
护理专科自荐书范文
2014/02/18 职场文书
高中生操行评语大全
2014/04/25 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
冰峪沟导游词
2015/02/09 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
浅谈Redis的事件驱动模型
2022/05/30 Redis