JS+HTML5 canvas绘制验证码示例
作者:匿名的girl 时间:2023-07-19 11:23:53
本文实例讲述了JS+HTML5 canvas绘制验证码。分享给大家供大家参考,具体如下:
css样式:
<style>
body{
text-align: center;
}
canvas{
background:#ddd;
}
</style>
HTML部分:
body中添加标签canvas:
<canvas id="c3"></canvas>
js部分:
//创建两个变量保存验证码的宽度和高度
var w = 120;
var h = 30;
//将变量值赋值给canvas
c3.width = w;
c3.height = h;
//获取画笔
var ctx = c3.getContext("2d");
//创建两个函数,返回指定范围内的随机数,随机颜色
//随机数
function rn(min,max){
var n = Math.random()*(max-min)+min;
return Math.floor(n);
}
//随机颜色
function rc(min,max){
var r = rn(min,max);
var g = rn(min,max);
var b = rn(min,max);
return `rgb(${r},${g},${b})`;
}
//填充的背景
ctx.fillStyle=rc(180,230);
ctx.fillRect(0,0,w,h);
//创建一个随机的文字[字母和数字]4个
var pool = "ABCDEFGHIJKabced胡歌0123456789哈哼哈哈";
var str ="";
for(var i = 0;i<4;i++){
var index = Math.floor(Math.random()*pool.length);
str +=pool[index];
}
//console.log(str);
ctx.font = "30px SimHei";
ctx.fillStyle = rc(80,180);//文字颜色
ctx.textBaseline="top";
ctx.fillText(str,20,0);//在(20,0)处开始填充文字
//绘制6条干扰线
for(var i = 0;i<6;i++){
ctx.strokeStyle = rc(0,255);
ctx.beginPath();
ctx.moveTo(rn(0,w),rn(0,h));
ctx.lineTo(rn(0,w),rn(0,h));
ctx.stroke();
}
//绘制50个干扰点
for(var i = 0;i<50;i++){
ctx.fillStyle = rc(0,255);
ctx.beginPath();
ctx.arc(rn(0,w),rn(0,h),1,0,2*Math.PI);
ctx.fill();
}
测试如下完整示例代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>www.jb51.net canvas绘制验证码</title>
<style>
body{
text-align: center;
}
canvas{
background:#ddd;
}
</style>
</head>
<body>
<canvas id="c3"></canvas>
<script>
//创建两个变量保存验证码的宽度和高度
var w = 120;
var h = 30;
//将变量值赋值给canvas
c3.width = w;
c3.height = h;
//获取画笔
var ctx = c3.getContext("2d");
//创建两个函数,返回指定范围内的随机数,随机颜色
//随机数
function rn(min,max){
var n = Math.random()*(max-min)+min;
return Math.floor(n);
}
//随机颜色
function rc(min,max){
var r = rn(min,max);
var g = rn(min,max);
var b = rn(min,max);
return `rgb(${r},${g},${b})`;
}
//填充的背景
ctx.fillStyle=rc(180,230);
ctx.fillRect(0,0,w,h);
//创建一个随机的文字[字母和数字]4个
var pool = "ABCDEFGHIJKabced胡歌0123456789哈哼哈哈";
var str ="";
for(var i = 0;i<4;i++){
var index = Math.floor(Math.random()*pool.length);
str +=pool[index];
}
//console.log(str);
ctx.font = "30px SimHei";
ctx.fillStyle = rc(80,180);//文字颜色
ctx.textBaseline="top";
ctx.fillText(str,20,0);//在(20,0)处开始填充文字
//绘制6条干扰线
for(var i = 0;i<6;i++){
ctx.strokeStyle = rc(0,255);
ctx.beginPath();
ctx.moveTo(rn(0,w),rn(0,h));
ctx.lineTo(rn(0,w),rn(0,h));
ctx.stroke();
}
//绘制50个干扰点
for(var i = 0;i<50;i++){
ctx.fillStyle = rc(0,255);
ctx.beginPath();
ctx.arc(rn(0,w),rn(0,h),1,0,2*Math.PI);
ctx.fill();
}
</script>
</body>
</html>
运行结果如下:
希望本文所述对大家JavaScript程序设计有所帮助。
来源:https://www.cnblogs.com/wangruifang/p/7509565.html
标签:JS,HTML5,canvas,绘制验证码
0
投稿
猜你喜欢
Linux安装Python3如何和系统自带的Python2并存
2023-08-25 03:42:09
mysql优化配置参数
2024-01-27 11:25:35
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2022-07-08 08:39:06
Python使用剪切板的方法
2022-01-25 02:17:39
numpy和pandas中数组的合并、拉直和重塑实例
2022-06-28 02:55:07
python导出chrome书签到markdown文件的实例代码
2022-08-26 00:49:36
Python Mock模块原理及使用方法详解
2023-03-31 14:13:56
想学python 这5本书籍你必看!
2023-11-20 07:41:46
一篇文章带你入门SQL编程
2024-01-12 13:05:22
如何查看连接MYSQL数据库的IP信息
2024-01-16 17:26:51
用Dreamweaver设计Wordpress留言板教程(一)
2010-03-17 15:44:00
什么是blob,mysql blob大小配置介绍
2024-01-12 19:05:27
利用ajax实现简单的注册验证局部刷新实例
2024-05-02 17:04:53
MySql分组后随机获取每组一条数据的操作
2024-01-26 21:12:11
sql server如何去除数据中的一些无用的空格
2024-01-18 02:22:22
Python读取ini配置文件传参的简单示例
2022-02-06 09:51:36
Pandas使用分隔符或正则表达式将字符串拆分为多列
2022-03-05 13:52:54
python定时器使用示例分享
2023-04-06 15:03:57
python实现超市商品销售管理系统
2021-01-06 22:18:14
详解JavaScript匿名函数和闭包
2024-04-19 10:07:12