实现签名画板

需求:制作签名画板,签名后能生成图片。本文介绍使用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)) 结果如下:

相关推荐
蒜苔肉丝5 分钟前
Vue3 动态表单:模块复用 + 动态增删行 + 数据回显
前端·javascript·vue.js
Cxiaomu20 分钟前
从 TRTC Demo 到独立音视频服务:React + TRTC Web SDK 服务化实践
前端·react.js·音视频
索西引擎28 分钟前
【React】Redux 中间件机制:副作用处理与数据流增强的形式化分析
前端·react.js·中间件
寒草1 小时前
「寒草呈献」工作六年,是否仍有创造未来的勇气 ✨
前端·后端
HackTwoHub1 小时前
解锁 AI 红队全新玩法!Claude-Red 攻防 Skill 库,内置 SQLi、XXE、文件上传等 Web 专项 Skill,一键导入快速落地渗透实战
前端·人工智能·web安全·网络安全·自动化·系统安全
石小石Orz1 小时前
如何设计一个优秀的 Skills
前端·人工智能
程序员爱钓鱼2 小时前
Rust 切片 Slice 详解:安全访问连续数据
前端·后端·rust
alexander0684 小时前
CSS 类选择器组合
前端·css
寅时码9 小时前
React 之死·终章:一个 useRef,把闭包陷阱、依赖数组、漫天 rerender 全送走
前端·react.js·ai编程
不好听6139 小时前
HTML 事件监听机制:从 DOM Level 0 到 React 合成事件
前端·react.js·html