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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
javascript求日期差的方法
Mar 02 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
Aug 01 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
关于使用axios的一些心得技巧分享
Jul 02 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 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学习笔记之 函数声明
2011/06/09 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP5.3新特性小结
2016/02/14 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
js 表格隔行颜色
2009/12/02 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
基于jquery实现简单的分页控件
2016/03/17 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
Python中几种导入模块的方式总结
2017/04/27 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
企业车辆管理制度
2014/01/24 职场文书
房产授权委托书范本
2014/09/22 职场文书
银行贷款委托书范本
2014/10/11 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
小学元宵节活动总结
2015/02/06 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript