html5采集手写签名,前端canvas手写签名(含移动端)

这篇博客详细介绍了如何使用HTML5的canvas元素创建一个手写签名的功能。通过监听触摸和鼠标事件,实现画板上的绘制,并提供了清空画板和保存签名图片为PNG的功能。代码中涉及到了线条宽度、颜色选择以及事件处理等关键点。
摘要由CSDN通过智能技术生成

55a81b32e89e

image.png

直接上代码

手写签名

html,

body {

margin: 0;

padding: 0;

}

.saveimg {

text-align: center;

}

.saveimgs span {

display: inline-block;

margin-top: 5px;

}

清空画板 Line width :

1

3

5

7

9

11

Color :

black

blue

red

green

yellow

gray

保存

var mousePressed = false;

var lastX, lastY;

var ctx = document.getElementById('myCanvas').getContext("2d");

var c = document.getElementById("myCanvas");

var control = document.getElementsByClassName("control")[0];

var saveimgs = document.getElementsByClassName("saveimgs")[0];

window.onload = function() {

InitThis();

}

function saveImageInfo() {

var image = c.toDataURL("image/png");

var ctximg = document.createElement("span");

ctximg.innerHTML = "from canvas";

if (saveimgs.getElementsByTagName('span').length >= 1) {

var span_old = saveimgs.getElementsByTagName("span")[0];

saveimgs.replaceChild(ctximg, span_old)

} else {

saveimgs.appendChild(ctximg);

}

// console.log(image)

}

var selected1, selected2;

function aaa() {

var sel = document.getElementById('selWidth');

var value = sel.selectedIndex;

return selected1 = sel[value].value;

}

function aaa2() {

var sel2 = document.getElementById('selColor');

var value = sel2.selectedIndex;

return selected2 = sel2[value].value;

}

function InitThis() {

// 触摸屏

c.addEventListener('touchstart', function(event) {

console.log(1)

if (event.targetTouches.length == 1) {

event.preventDefault(); // 阻止浏览器默认事件,重要

var touch = event.targetTouches[0];

mousePressed = true;

Draw(touch.pageX - this.offsetLeft, touch.pageY - this.offsetTop, false);

}

}, false);

c.addEventListener('touchmove', function(event) {

console.log(2)

if (event.targetTouches.length == 1) {

event.preventDefault(); // 阻止浏览器默认事件,重要

var touch = event.targetTouches[0];

if (mousePressed) {

Draw(touch.pageX - this.offsetLeft, touch.pageY - this.offsetTop, true);

}

}

}, false);

c.addEventListener('touchend', function(event) {

console.log(3)

if (event.targetTouches.length == 1) {

event.preventDefault(); // 阻止浏览器默认事件,防止手写的时候拖动屏幕,重要

// var touch = event.targetTouches[0];

mousePressed = false;

}

}, false);

/*c.addEventListener('touchcancel', function (event) {

console.log(4)

mousePressed = false;

},false);*/

// 鼠标

c.onmousedown = function(event) {

mousePressed = true;

Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop, false);

};

c.onmousemove = function(event) {

if (mousePressed) {

Draw(event.pageX - this.offsetLeft, event.pageY - this.offsetTop, true);

}

};

c.onmouseup = function(event) {

mousePressed = false;

};

}

function Draw(x, y, isDown) {

if (isDown) {

ctx.beginPath();

ctx.strokeStyle = selected2;

ctx.lineWidth = selected1;

ctx.lineJoin = "round";

ctx.moveTo(lastX, lastY);

ctx.lineTo(x, y);

ctx.closePath();

ctx.stroke();

}

lastX = x;

lastY = y;

}

function clearArea() {

// Use the identity matrix while clearing the canvas

ctx.setTransform(1, 0, 0, 1, 0, 0);

ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);

// 清除签名图片

if (saveimgs.getElementsByTagName('span').length >= 1) {

var clearImg = saveimgs.getElementsByTagName('span')[0];

saveimgs.removeChild(clearImg);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值