本篇文章给大家分享的是有关使用js+canvas实现绘制图形验证码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
思路:通过随机获取指定字符串的指定数的字符,通过canvas绘制出来
返回指定范围的随机整数
//指定范围的随机函数:返回指定范围内的随机整数
function rand(min, max) {
/*
max=10
min=1
Math.random()=0 最小取到1
Math.random()=0.9999*10=Math.floor(9.9)=>+1=10
*/
return Math.floor(Math.random() * (max - min + 1)) + min;
}
返回指定数量的随机字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必须减一否则会出现下标越界
code += str.charAt(index) + ' ';
}
return code
}
绘制图形
function verify(selector) {
//获取canvas的dom对象
var cas = document.querySelector(selector);
//获取上下文对象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//绘制矩形,作背景色
ctx.fillStyle = 'orange';
//绘制实心矩形
ctx.fillRect(0, 0, 160, 50)
//文字居中
// ctx.textAlign = 'left'
//字体样式的属性要遵循css中的书写顺序
ctx.font = '900 24px 宋体'
//设置字体颜色
ctx.fillStyle = '#FFF';
//绘制文字
ctx.fillText(code, 20, 30);
}
鼠标点击更新验证码
document.querySelector('canvas').addEventListener('click', function () {
verify('canvas')
})
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>绘制图形验证码</title>
<style>
canvas {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas width="160" height="50"></canvas>
</body>
<script>
verify('canvas')
document.querySelector('canvas').addEventListener('click', function () {
verify('canvas')
})
function verify(selector) {
//获取canvas的dom对象
var cas = document.querySelector(selector);
//获取上下文对象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//绘制矩形,作背景色
ctx.fillStyle = 'orange';
//绘制实心矩形
ctx.fillRect(0, 0, 160, 50)
//字体样式的属性要遵循css中的书写顺序
ctx.font = '900 24px 宋体'
//设置字体颜色
ctx.fillStyle = '#FFF';
//绘制文字
ctx.fillText(code, 20, 30);
}
//指定范围的随机函数:返回指定范围内的随机整数
function rand(min, max) {
/*
max=10
min=1
Math.random()=0 最小取到1
Math.random()=0.9999*10=Math.floor(9.9)=>+1=10
*/
return Math.floor(Math.random() * (max - min + 1)) + min;
}
//返回随机字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必须减一否则会出现下标越界
code += str.charAt(index) + ' ';
}
return code
}
// console.log(randStr(6))
</script>
</html>
以上就是使用js+canvas实现绘制图形验证码,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。