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 相关文章推荐
30个最佳jQuery Lightbox效果插件分享
Apr 11 Javascript
namespace.js Javascript的命名空间库
Oct 11 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
Nov 10 Javascript
JS长整型精度问题实例分析
Jan 13 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
关于function类中定义变量this的简单说明
May 28 Javascript
react路由配置方式详解
Aug 07 Javascript
js 两数组去除重复数值的实例
Dec 06 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
javascript 高级语法之继承的基本使用方法示例
Nov 11 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 28 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使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
python实现Windows电脑定时关机
2018/06/20 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
pandas 层次化索引的实现方法
2019/07/06 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
高三历史教学反思
2014/01/09 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
小学二年级学生评语
2014/04/21 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python