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 css float属性的特殊写法
Nov 13 Javascript
模仿百度三维地图的js数据分享
May 12 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
vue 实现全选全不选的示例代码
Mar 29 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 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/06/30 PHP
php简单实现MVC
2015/02/05 PHP
js函数般调用正则
2008/04/08 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
js实现图片360度旋转
2017/01/22 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
机器学习10大经典算法详解
2017/12/07 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python获取代码运行时间的实例代码
2018/06/11 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python和c语言的主要区别总结
2019/07/07 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
2014年两会学习心得体会
2014/03/17 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android