Signature Pad 使用
实现功能
- 能够在移动设备上实现电子签名,并保存为图片
git地址
参数说明
- dotSize:点的大小(在屏幕上点击留下的点大小,单位:px)
- minWidth: 线的最小宽度(单位:px,默认:0.5)
- maxWidth:线的最大宽度(单位:px,默认:2.5)
- throttle:节流(每次绘制两个点之间的时间,单位:ms,默认:16,注意:设置过大会显得很卡顿)
- minDistance:最小距离(每次绘制两个点之间的最小距离,单位:px,默认:5)
- backgroundColor:背景色(默认:#000)
- penColor:线条颜色(默认:#fff)
- velocityFilterWeight:根据速度控制线的weight(默认:0.7)
- onBegin:一笔开始时触发的事件
- onEnd:一笔结束时触发的事件
API说明
- toDataURL():保存为图片,默认保存为png,toDataURL("image/jpeg")-保存为jpg,toDataURL("image/svg+xml")-保存为svg
- isEmpty():签名是否为空
- clear():清空签名
- toData():返回签名点的数组
- fromData():
- off():解绑所有事件
- on():重新绑定所有事件
调整画布尺寸
- 给画布设置一个固定大小,有时签名会呈现一个被拉伸的状态,这是需要重新调整签名的尺寸,官方给出了方法,直接粘贴代码即可。
function resizeCanvas() {
var ratio = Math.max(window.devicePixelRatio || 1, 1);
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext("2d").scale(ratio, ratio);
signaturePad.clear(); // otherwise isEmpty() might return incorrect value
}
window.addEventListener("resize", resizeCanvas);
resizeCanvas();
使用中遇到的问题
1. 安装依赖后报错
- v3.0.0-beta.3版本有问题,建议使用v2.3.0(官方demo使用的是v2.3.0,或者直接用demo中的js)
2. 保存后图片背景色为黑色
- 这个问题主要是有两个方面造成的:一个是插件默认为黑色透明的背景色;一个是我保存了jpg格式的。
- 如果想要透明背景色,直接保存为png格式,无需设置背景色,用默认的即可。
使用代码
- 我是在angular1.X中用的
# index.html
<script type="text/javascript" src="js/lib/signature_pad.js"></script>
# signature.html
<span id="selfSign"></span>
<button class="button button-fill sign" data-action="sign">签名</button>
# signatureCtr.js
let signButton = document.querySelector("[data-action=sign]");
let dataURL = "";
signButton.addEventListener("click", function (event) {
SdicInterview.popup(
'<div class="popup sign-popup">' +
'<a class="color-indigo close-popup" data-popup=".sign-popup" style="font-size:25px;position:absolute;top:4px;right:10px;cursor:pointer;z-index:1"> <i class="fa fa-times"></i></a>' +
'<div id="signature-pad">' +
"<h1>专 家 签 名</h1>" +
'<canvas class="form-footer-signature"></canvas>' +
'<button class="button clear" data-action="clear">清除签名</button>' +
'<button class="button save close-popup" data-popup=".sign-popup" data-action="save-jpg">确定</button>' +
"</div>"
);
var wrapper = document.getElementById("signature-pad");
var clearButton = wrapper.querySelector("[data-action=clear]");
var canvas = wrapper.querySelector("canvas");
var saveJPGButton = wrapper.querySelector("[data-action=save-jpg]");
var signaturePad = new SignaturePad(canvas, {
backgroundColor: "#fff",
});
function resizeCanvas() {
var ratio = Math.max(window.devicePixelRatio || 1, 1);
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext("2d").scale(ratio, ratio);
signaturePad.clear();
}
window.onresize = resizeCanvas;
resizeCanvas();
clearButton.addEventListener("click", function (event) {
signaturePad.clear();
});
saveJPGButton.addEventListener("click", function (event) {
if (!signaturePad.isEmpty()) {
dataURL = signaturePad.toDataURL("image/jpeg");
document.getElementById("selfSign").innerHTML = '<img class="sign-img-sum" id="selfSign" src="' + dataURL + '" />';
}
});
});
Signature Pad 使用的更多相关文章
- Android开源项目分类汇总
目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
- android 很多牛叉布局github地址(转)
原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- Github上的andoird开源组件整理
http://blog.csdn.net/findsafety/article/details/50623627 第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListVie ...
- Android开源项目汇总【转】
主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView ...
- GitHub上史上最全的Android开源项目分类汇总
今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...
- Android 开源项目分类汇总(转)
Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...
- Android 开源项目分类汇总
Android 开源项目分类汇总 Android 开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView ...
- 四款超棒的jQuery数字化签名插件
在浏览器中,我们有很多方式来绘制生成签名效果,并且有很多很棒很智能的jQuery插件.数字化签名是未来的发展方向,正是这个原因我们这里收集并且推荐了四款超棒的jQuery数字化签名插件,希望大家喜欢! ...
随机推荐
- WebGoat8.2.2-A8不安全的反序列化
1.概念 使用反序列化在各编程语言中略有不同,如Java.PHP.Python.Ruby.C/C++,但在关键概念上是一样的 序列化:将(内存中的)对象转化成数据格式,以便存储或传输 ...
- P7708「Wdsr-2.7」八云蓝自动机 Ⅰ
*X. P7708「Wdsr-2.7」八云蓝自动机 Ⅰ. 摘自 分治与根号数据结构学习笔记 第三部分 莫队 例题 X.. 一道莫队好题.私以为本题最有价值的地方在于对单点修改的转化以及对交换两个数的处 ...
- SP20173 DIVCNT2 - Counting Divisors (square)
Refer 主要思路参考了 Command_block 的题解. Description 给定 \(n\)(\(n\le 10^{10}\)),求 \[\sum_{i=1}^n\sigma_0(i^2 ...
- FVCOM编译过程详解
本文目的旨在介绍fvcom编译的全过程,顺便介绍linux中make命令的文件写法和一般的编程过程简述一下. 1.编程过程 编程,一般就是编写可执行程序过程.这个过程主要是源文件生成中间代码文件,再到 ...
- 如何根据taxid(或taxname)快速获得taxname(或taxid)?
目录 需求 实现 需求 我有一个物种taxonomy ID的list,想获得相应的物种名,不要一个个去NCBI Taxonomy官网查.反之根据物种名list查询对应的taxid. 实现 因为之前没怎 ...
- Excel—分组然后取每组中对应时间列值最大的或者最小的
1.MAX(IF(A:A=D2,B:B)) 输入函数公式后,按Ctrl+Shift+Enter键使函数公式成为数组函数公式. Ctrl+Shift+Enter: 按住Ctrl键不放,继续按Shift键 ...
- Hive-删除表(drop、truncate的区别)
Hive删除操作主要分为几大类:删除数据(保留表).删除库表.删除分区.我将以下图为例清空iot_devicelocation中的数据,之后再删除表.库等. 解释: use xpu123; #使用 ...
- Scrapy-Splash的安装和使用
Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具. Scrapy-Splash的安装分为两部分.一个是Splash服务的安装,具体是通过Docker,安装之后,会启动一 ...
- Requests的安装和使用
一.Requests的安装1.pip3 install requests2.验证 import requests 不报错即可
- accent, access, accident
accent A colon (:) is used to represent a long vowel [元音], e.g. sheet /ʃiːt/ and shit /ʃit/. The wor ...