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 基础篇4 window对象,DOM
Mar 14 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
document.forms用法示例介绍
Jun 26 Javascript
Javascript中判断对象是否为空
Jun 10 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
Dec 04 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
JavaScript实现图片瀑布流和底部刷新
Jan 02 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
Feb 01 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 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
一道关于php变量引用的面试题
2010/08/08 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
建筑工程质量通病防治方案
2014/06/08 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
学校教师培训工作总结
2015/10/14 职场文书