用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编码的URLimage.src = canvas.toDataURL("image/png")
转载于:https://www.cnblogs.com/woai3c/p/10756111.html
用canvas实现手写签名功能相关推荐
- android 手写签批_Android自定义实现手写签名功能
一.Android自定义View步骤 : 自定义属性: 选择和设置构造方法: 重写onMeasure()方法: 重写onDraw()方法: 重写onLayout()方法: 重写其他事件的方法(滑动监听 ...
- android 电子签名 手写签名 功能实现
android 电子签名 手写签名 功能实现 这个手写的效果 就是一个 重写的的自定义的view 代码如下: package com.example.hand.views;import java. ...
- 微信小程序Canvas实现手写签名
微信小程序Canvas实现手写签名 功能描述 点击按钮显示弹窗,弹窗主体为签名板,底部两个按钮为清除和保存. 清除按钮:清空签名板 保存按钮:保存签名为图片,并关闭弹窗 关键点分析 Canvas实现手 ...
- canvas实现手写签名
使用canvas实现手写签名,效果如下 PC端 // 实现canvas签名var canvas = document.getElementById('canvas');var ctx = canvas ...
- 微信 html5 识别手写签名,html5 canvas做手写签名,该如何解决
html5 canvas做手写签名 我用HTML5做了一个手写签名,运行在手机浏览器上,但是画出来效果总是很粗糙,曲线不够平滑,想找大侠指教 HTML> PhoneGap 浏览器不支持canva ...
- html5 移动端手写签名,H5移动端项目实现手写签名功能 vue实现手写签名
vue 移动端实现手写签名效果,功能很完美,保存时保存为base64格式. 刚好项目用到此功能,就网上找了一下,清理了无用代码,简单方便,因为项目中多个地方需要使用,所以我将它整理为组件,通过ref和 ...
- 手机手写签名 php,基于canvas实现手写签名(vue)
最近一直在研究canvas的东西,正好之前对手写签名这块有点兴趣.就自己基于vue写了一个简易的手写签名demo. 其中原理比较简单,先生成一个canvas画布,并对canvas进行touchstar ...
- Android手写签名功能(包含画米字格,人名和书写轨迹)
本文主要介绍Android手写签名的功能实现,效果如下图 1.根据人名的个数绘制人的名称 这个逻辑分几个步骤:首先创建画笔,然后根据一个字,创建一个字的矩形框,然后根据矩形框获取到画这个字的宽高. / ...
- H5移动端项目实现手写签名功能 vue实现手写签名
vue 移动端实现手写签名效果,功能很完美,保存时保存为base64格式. base64转file文件格式 vue中将base64转file文件格式 刚好项目用到此功能,就网上找了一下,清理了无用代码 ...
最新文章
- java位运算符取反_java运算符
- ABAP制作密码输入框
- 成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程
- codeforces 935E Fafa and Ancient Mathematics 语法树、动态规划
- docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...
- 十大双跨平台整体发展情况盘点
- 用delphi操作excel
- ArcGIS Pro 性能诊断
- textfield tips
- python3安装详细教程
- Java常用集合框架源码解析合集
- 计算机考研数学一大纲2016,2016考研大纲:计算机专业
- java fly bird小游戏_实战|JavaScript实现Fly Bird小游戏-【安基网】
- 共模电感 | 关键参数的计算步骤
- 三国志·魏书·牵招传
- 【9】数据可视化:基于 Echarts + Python 实现的动态实时大屏 - 酒店行业
- 读书笔记(十二)--穷爸爸,富爸爸
- 异常来自 HRESULT:0x80070057 (E_INVALIDARG)
- 找玩具 概率 dfs
- 微交易平台官网_熟悉官网常用版块
热门文章
- c语言socket段错误,(Qtcpsocket)退出程序时提示段错误的解决
- centos安装redis并客户端连接_网络共享打印机图文教程,电脑客户端连接安装设置共享打印机方法...
- linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
- php pm.status path,phpfpm开启pm.status_path配置,查看fpm状态参数
- Node.js webpack 打包的入口与出口
- npumpy.insert(arr, obj, values[, axis])
- 双向板课设按照弹性计算_T004 结构专业施工图技术问答结构布置与计算
- 怎么让照片变年轻_女生都想要变年轻,但是应该怎么做呐?其实有了背带裤就可以搞定...
- Citrix,微软,VMware:它们的优缺点(资料整理汇集)
- 用vb打开word excel 文件,出现提示“发现不可读取的内容”