用canvas实现手写签名功能

简介: 用canvas实现手写签名功能

更多文章

最近开发网站有一个需求,要求页面上有一块区域,用户能用鼠标在上面写字,并能保存成图片 base64 码放在服务器。

这样的需求用 canvas 实现是最好的。

需要用到 canvas 的以下几个属性:

  • beginPath 创建一个新的路径
  • globalAlpha 设置图形和图片透明度的属性
  • lineWidth 设置线段厚度的属性(即线段的宽度)
  • strokeStyle 描述画笔(绘制图形)颜色或者样式的属性,默认值是 #000 (black)
  • moveTo(x, y) 将一个新的子路径的起始点移动到(x,y)坐标的方法
  • lineTo(x, y) 使用直线连接子路径的终点到x,y坐标的方法(并不会真正地绘制)
  • closePath 它尝试从当前点到起始点绘制一条直线
  • stroke 它会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径,默认颜色是黑色

除了用到这些属性外,还需要监听鼠标点击和鼠标移动事件。

废话就不多说了,直接上代码DEMO

我对代码做了扩展,除了支持画笔,还支持喷枪、刷子、橡皮擦功能。

canvas 转成图片

将 canvas 转成图片,需要用到以下属性:

  • toDataURL

canvas.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。图片的分辨率为96dpi。

const image = new Image()
    // canvas.toDataURL 返回的是一串Base64编码的URL
    image.src = canvas.toDataURL("image/png")
目录
相关文章
Flutter 121: 图解简易 Slider 滑动条
0 基础学习 Flutter,第一百二十一步:简单学习 Slider 滑动条!
1893 0
Flutter 121: 图解简易 Slider 滑动条
|
8月前
你为什么卸载了WPS?WPS 如何卸载干净?卸载不了WPS?看这里
本文介绍了如何彻底卸载电脑软件,包括WPS、Office 2016及Steam游戏等,分析了软件卸载不干净的原因,并推荐使用第三方工具如Geek进行深度清理,帮助用户解决残留文件、注册表项和服务项问题,确保系统运行更流畅。
1504 1
|
JavaScript 前端开发
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
675 0
|
人工智能 自然语言处理 搜索推荐
谷歌 ai人工智能平台叫什么?请记住答案是:Gemini
Gemini 是 Google 开发的一个大型AI语言模型 ,代表着人工智能领域的一项重大进步。它是一个强大的工具,旨在理解和生成人类语言,并具备广泛的功能,可以帮助人们完成各种任务,从创作不同类型的文本到回答复杂的问题,再到翻译语言等等。
|
存储 Kubernetes 监控
全面解析容器编排技术 Kubernetes
容器编排是指对多个容器的部署,管理和监控。
全面解析容器编排技术 Kubernetes
|
JavaScript
vue3 实现电子签名
vue3 实现电子签名
1046 1
|
存储 Java 关系型数据库
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
526 1
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
|
消息中间件 关系型数据库 MySQL
flink cdc DataStream api 时区问题
flink cdc DataStream api 时区问题
flink cdc DataStream api 时区问题
|
XML JSON JavaScript
关于2k Star项目BpmnProcessDesigner的开发过程与扩展说明
关于2k Star项目BpmnProcessDesigner的开发过程与扩展说明
1843 4
|
JavaScript
Vue中 引入使用 vue-esign 实现手写电子签名
Vue中 引入使用 vue-esign 实现手写电子签名
1381 0
Vue中 引入使用 vue-esign 实现手写电子签名