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左侧多级菜单动态的解决方案
Feb 01 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
Feb 01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
Sep 02 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
JS实现动态生成表格并提交表格数据向后端
Nov 25 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
vue.js使用watch监听路由变化的方法
Jul 08 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
微信小程序自定义底部弹出框动画
Nov 18 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实现读取和编写XML DOM代码
2010/04/07 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
Laravel find in set排序实例
2019/10/09 PHP
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
python使用pil库实现图片合成实例代码
2018/01/20 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Python语言异常处理测试过程解析
2020/01/08 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
请解释接口的显式实现有什么意义
2012/05/26 面试题
销售高级职员求职信
2013/10/29 职场文书
营销专业应届生求职信
2013/11/26 职场文书
安全检查验收制度
2014/01/12 职场文书
领导视察欢迎词
2014/01/15 职场文书
迟到检讨书1000字
2014/01/15 职场文书
2014小学年度工作总结
2014/12/20 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
正规借条模板
2015/05/26 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS