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动态添加事件
Nov 01 Javascript
让table变成exls的示例代码
Mar 24 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 Javascript
纯JS实现可拖拽表单的简单实例
Sep 02 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
详解express与koa中间件模式对比
Aug 07 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
关于vue里页面的缓存详解
Nov 04 Javascript
微信小程序实现录音功能
Nov 22 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 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 新手入门教程
2009/08/03 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
2019/08/20 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
利用Psyco提升Python运行速度
2014/12/24 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Python3实现二叉树的最大深度
2019/09/30 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
企业员工辞职信范文
2015/05/12 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书