web 手写板是个比较常见的需求了,多用在需要用户进行签名认证的业务中。
canvas 作为 H5 的新标签,适用于 动态绘制 复杂的 高分辨率 图形,是此类需求的最好方案。
但在实际开发中,遇到了几个问题:
这篇围绕这几个问题进行解答说明。
MDN 提供了 Canvas 入门的详细文档,基本常用 API 的都能直接找到。
创建 canvas 画布及画笔样式
定义“画笔”事件
首先,结合 getBoundingClientRect 能获取画笔在画布中的坐标值
根据画笔绘制过程,拆分为三个状态:开始绘制(记录 canvas 起始点),笔迹跟随,绘制完成(事件释放)
效果如下
笔迹跟随
上面虽然完成了功能,只是简单的 Demo,实际更偏向使用更稳定的第三方插件: jSignature 是个比较好的选择。
它依赖 jQuery ,对于不支持 canvas 的浏览器有降级处理,同时对笔迹绘制,图形导出有优化,对比我们 Demo,其有更好的稳定性和扩展性。
jSignature 提供了线上 demo,可以直接看效果。
伪代码如下(Vue):
最后页面效果如下:
jSignature-demo
如何切换横屏
这个问题很简单,对 css 添加个属性 transform 旋转属性便可,但会发现旋转 90° 后页面出现了异常:
旋转异常
顶部导航栏栏,按钮操作栏都消失了,画布也错位。
旋转后,页面显示异常
这是因为旋转的整个元素按着页面中心进行旋转(横竖屏切换),之后需要重新对页面旋转后的宽高进行置换:
由于宽高调整后,旋转的中心改变了,需要对偏移量进行修复。
旋转中心
这个偏移量起始先对未旋转前的页面计算旋转中心点(已重置过宽高),假设坐标原点在左上角,那么坐标值为:(320,180)
当旋转 90° 后,坐标值更换为:(180,320),需要对 320-180=140 进行偏移重置。那么 css 样式更新为:
最后旋转后的页面将恢复正常:
偏移重置后
画布错位
当绘制签名时,会发现画布显示异常,绘制位置和实际笔迹出现的位置不同(被旋转 90°),而且画布也非旋转后的大小。
画布错位
旋转后画布实际区域如下:
画布实际区域
虽然 画板区域 是在页面旋转后生成的,但画布所挂载的节点受旋转的影响。所以对于画布需要“撤销”旋转的 90° 影响,同时画布在生成前需要根据旋转后实际呈现的高宽指定生成。
代码如下:
最后,签名绘制和笔迹呈现保持了一致。
虽然上面对画布区域进行了“额外处理”使整个页面显示正常,但实际交互中会有一些 tip 或者弹框提示,这些元素由于是新挂载到页面某些节点上的,没有受旋转影响,就会有如下非预期展示:
tip异常
而我们不可能见一个修改一个,需要全局地观察这类元素变动,进行错位展示的重置。
这时我们可以借助 MutationObserver 来对这些元素进行监听,来反转 90° 重置:
MutationObserver 监听
解决上述几个问题后,最后效果如下:
完整效果
做一个手写签名功能轻松几步实现,保存成图片提交,网上招商到这个js库jq-signature,分享一下。
以下内容来自插件官方
插件介绍
jq-signature是一款基于HTML5 canvas的支持移动触摸设备的在线签名和涂鸦jQuery插件。可以使用该jQuery插件来制作在线签名或涂鸦板,用户绘制的东西可以用图片的形式保存下来,非常方便实用。
兼容浏览 Chrome Firefox Opera Safari IE10+
简要教程
jq-signature是一款基于HTML5 canvas的支持移动触摸设备的在线签名和涂鸦jQuery插件。可以使用该jQuery插件来制作在线签名或涂鸦板,用户绘制的东西可以用图片的形式保存下来,非常方便实用。关于使用HTML5 canvas制作涂鸦板的方法,可以参考《使用html5 canvas制作涂鸦画板》,如何将绘制号的涂鸦图片上传到服务器可以参考《HTML5 canvas画图及图片上传服务器》。
使用方法
HTML结构
然后可以像下面这样创建一个签名区域。你可以使用HTML5的data-option来传递一些参数。
你可以创建两个操作按钮,分别用于清空画板和保存签名。
你可以使用一个空的<div>来显示保存的签名图片。
初始化插件
在页面加载完毕之后使用下面的方法来初始化该签名插件。
配置参数
下面是该签名插件的一些可用参数,这些参数同时也可以在data-attributes上使用:
原文:
http://www.htmleaf.com/html5/html5-canvas/201505281921.html
很多人问我,怎样才能快速模仿签名?特别是模仿出他人无法分辨的笔迹,今天教大家一招,您也可以笔迹模仿的!下面我来揭秘:
简单的说,签字模仿就要把握好三个“度”!即;
速度,角度,力度!
模仿笔迹的第一就是要研究原迹。仔细观察原手迹,并注意他的手写方式。即,角度!用心揣摩他的捏笔姿势,“字如其人”每个人的签名签字角度都不同。甚至他的心情不同,签字也有所不同!有些人不先观察就盲目模仿笔迹,很可能犯明显的错误。请注意以下这几点:A看一下原被模仿签名的弧线高度和大小。是潇洒的龙飞凤舞,还是小又精致灵巧?把弧线写好是模仿签名的主要任务。b仔细检查被模仿签字笔画的结构,他们是否清晰,乱涂或拥挤不堪?有什么花招吗?c检查模仿字迹的坡度,是左边还是右,他到底倾斜了多少?还有多少?d笔触的链接位置。笔画之间是否有很多重叠或空白?e,观察签名模仿者的书写个性,即作者的书写神韵!很多模仿笔迹的人没有注意到这一点,只是盲目练习熟悉,外形写的也很像,但缺乏神!那就是字迹被模仿的个性!
第二就是速度即加强实践练习。如果您熟悉了签名签字,就需要大量练习。速度我符合原作者的书写速度,快了也不行,慢了更不行!笔迹模仿要达到高水平,困难就超出了您的想象力。签名很难被模仿,这就是为啥我们任然使用签字来验证许多法律文件的原因。练习时,请注意原始签名和模仿签名之间的细微差别,并进行进一步调整。直到您模仿字迹看起来自然并且神韵相似为止。我建议神似比形似更重要!
第三就是力度就是自信写出来!字迹模仿书写时,必须有足够的信心一次完成,也就是一气呵成,“速度”“角度”“力度”,不要花费的太长时间。自信的签字看起来比真实的要真实的多,快速签名,不要半途改变,千万记住,不要修饰!最后温馨提醒大家:模仿字迹模仿笔迹学会了只可救急,但不能从事违法罪行为!当面书写,写好拿走,模仿笔迹,模仿签字 浙江杭州模仿签名,签名设计,技术保障,千万别找到技术差的。技艺不成,反误事!专业模仿代写,各种签名,签字,可写任何高难度文字及任何外国文字。相似度可达99.99%,希望此文能对你有所帮助!
转载:http://www.mofangqianming.com/zhishi/21.html
*请认真填写需求信息,我们会在24小时内与您取得联系。