实现签名画板

需求:制作签名画板,签名后能生成图片。本文介绍使用vue-esign实现该功能

1.安装依赖
javascript 复制代码
npm install vue-esign --save
2.引入
javascript 复制代码
import vueEsign from 'vue-esign'
javascript 复制代码
 components: {
    vueEsign,
  },
3.html模块
html 复制代码
<div style="display: flex;justify-content: space-around">
  <div>
    <div style="border: #cccccc 1px solid;width: 400px">
      <vue-esign
          ref="esign"
          :width="400"
          :height="400"
          :isCrop="isCrop"
          :lineWidth="lineWidth"
          :lineColor="lineColor"
      />
    </div>
    <button @click="handleReset">清空画板</button>
    <button @click="handleGenerate">生成图片</button>
  </div>
  <div>
    <img style="border: #cccccc 1px solid;" :src="imgSrc" width="400" height="400">
  </div>
</div>

画布尺寸与样式设置

width/height:定义画布尺寸,即最终导出图片的宽高

lineWidth:设置画笔粗细

lineColor:自定义画笔颜色,支持十六进制、RGB、RGBA等多种格式

bgColor:画布背景色配置,为空时背景透明

isCrop:是否自动裁剪签名四周的空白区域

4.实现方法

javascript 复制代码
// 清空画布
handleReset () {
  this.$refs.esign.reset()
},
// 生成签名的base64图片
handleGenerate () {
  this.$refs.esign.generate().then(res => {
    this.imgSrc = res;
    console.log(res,this.base64ImgtoFile(res))
  }).catch(err => {
    console.log('画布没有签字时会执行这里 Not Signned')
  })
},
// 附:base64转化成图片
base64ImgtoFile(dataurl, fileName='file') {
  const arr = dataurl.split(",");
  const mime = arr[0].match(/:(.*?);/)[1];
  const suffix = mime.split('/')[1]
  const bstr = atob(arr[1]);
  let n = bstr.length;
  var u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], `${fileName}.${suffix}`, { type: mime });
},
4.控制台打印结果

console.log(res,this.base64ImgtoFile(res)) 结果如下:

相关推荐
wuhen_n1 分钟前
RAG 实战:语义检索 + 大模型生成精准问答
前端·langchain·ai编程
卤蛋fg66 分钟前
vxe-table 列拖拽排序与行拖拽排序:让表格布局任意排序
vue.js
沉尘5886 分钟前
ACE-GCM加解密微信小程序
前端
半个烧饼不加肉9 分钟前
JS 底层探究-- 普通函数和构造函数
开发语言·javascript·原型模式
春风得意之时26 分钟前
前端安装项目出现代理问题和ssl认证问题
前端·网络协议·ssl
问心无愧051331 分钟前
ctf show web入门109
android·前端·笔记
meilindehuzi_a37 分钟前
透视 V8 底部:从物理内存到函数式哲学,重新解构 JavaScript 数组
开发语言·javascript·ecmascript
粉末的沉淀39 分钟前
vue:Vite项目中高效管理纯色SVG图标的方案
前端·javascript·vue.js
FlyWIHTSKY40 分钟前
JavaScript 和 TypeScript 分别是什么,可以相互写吗
javascript·ubuntu·typescript