js+canvas实现网页签字,导出功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
body {
margin: 0;
padding: 0;
border: 0px;
height: 100vh;
width: 100vw;
display: flex;
}
#long_home {
width: 80vw;
height: 80vh;
/* background-color: black; */
/* margin: auto; */
position: relative;
}
#home_body {
width: 10vw;
height: 10vw;
background-color: rgb(213, 30, 30);
position: absolute;
cursor: move;
}
</style>
<body>
<div id="long_home">
<canvas id="myCanvas" width="800" height="500" style="border:1px solid #e30909;margin: 15px; "></canvas>
<button onclick="clearCanvas()">清空</button>
<button onclick="exportPicture()">导出图片</button>
</div>
<script>
var canvas = document.getElementById('myCanvas') //获取canvas上下文
var cvsCtx = canvas.getContext('2d'); //创建canvas2D对象
let startX = 0 //定义原始X轴坐标点
let startY = 0 //定义原始y轴坐标点
// cvsCtx.fillStyle = "#FF0000";
// cvsCtx.fillRect(408, 260, 40, 40)
cvsCtx.lineWidth = 2
canvas.addEventListener('mousedown', ({ x, y }) => {
isDown = true
startX = x
startY = y
cvsCtx.beginPath();
canvas.addEventListener('mousemove', droping, false)
})
canvas.addEventListener('mouseup', stoping)
// 开始绘画
function droping(events) {
const { x, y } = events
if (!isDown) return
cvsCtx.moveTo(x, y)
cvsCtx.lineTo(startX, startY)
cvsCtx.stroke()
startX = x
startY = y
}
//停止绘画
function stoping() {
cvsCtx.closePath();
canvas.removeEventListener('mousemove', droping)
}
//清空画布
function clearCanvas() {
cvsCtx.clearRect(0, 0, canvas.width, canvas.height)
}
//canvas导出图片
function exportPicture() {
let url = canvas.toDataURL('image/png')
console.log('base64地址', url);
}
</script>
</body>
</html>