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 相关文章推荐
JS函数重载的解决方案
May 13 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
使用npm发布Node.JS程序包教程
Mar 02 Javascript
基于jQuery实现仿淘宝套餐选择插件
Mar 04 Javascript
javascript判断网页是关闭还是刷新
Sep 12 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
js自定义input文件上传样式
Oct 26 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 Javascript
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
PHP 时间日期操作实战
2011/08/26 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
PHP反射实际应用示例
2019/04/03 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Django 路由控制的实现代码
2018/11/08 Python
Python实现12306火车票抢票系统
2019/07/04 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
简单说说tomcat的配置
2013/05/28 面试题
大学生会计职业生涯规划范文
2014/02/28 职场文书
环保标语口号
2014/06/13 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
重阳节标语大全
2014/10/07 职场文书
2015年护士节慰问信
2015/03/23 职场文书