canvas 做一个验证码

今天看了一个资料,讲的是利用html5里边新增元素canvas做一个验证码,然后就自己写点东西

一、首先在body里边建立一个canvas标签,并且设置ID。

<canvas id="mycanvas"></canvas>

二、获取canvas对象,设置canvas绘图环境

var canvas=document.getElementById("mycanvas");//获取canvas对象
var context=canvas.getContext('2d');//获取到canvas绘图环境

三、设置所画的图形的宽度和高度,然后画出图形

canvas.width=120;//设置验证码框的宽度
canvas.height=40;//设置验证码框的长度
context.strokeRect(0,0,120,40);//绘制一个矩形框

四、设置变量存储数据

var aCode=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',1,2,3,4,5,6,7,8,9,0]

五、循环变量,产生四位随机数 

  for(var i=0;i<4;i++){
	var x=20+20*i;
	var y=20+Math.random()*10;//产生一个随机值
	var index=Math.floor(Math.random()*36)
	var txt=aCode[index];//获取当前文字的索引
	context.font="bold 20px 微软雅黑";//设置
	context.fillStyle=getColor();//设置字体颜色
	context.fillText(txt,x,y);//将文字写道canvas上
	}

六、制作八条干扰线

for(var i=0;i<8;i++){                                   
	context.beginPath();                                 
	context.moveTo(Math.random()*120,40*Math.random());  
	context.lineTo(Math.random()*120,40*Math.random())   
	context.strokeStyle=getColor();//设置干扰线颜色             
	context.stroke();//绘制执行                              
}                                                        

七、制作二十个干扰点 

for(var i=0;i<20;i++){                            
	context.beginPath();                          
	var x=Math.random()*120;                      
	var y=Math.random()*40;                       
	context.moveTo(x,y);                          
	context.lineTo(x+1,y+1);                      
	context.strokeStyle=getColor();//设置干扰点颜色      
	context.stroke();//绘制执行                       
}                                                 

八、写一个过去颜色的方法    

function getColor(){//获取字体的颜色的方法         
	var r=Math.floor(Math.random()*256)  
	var g=Math.floor(Math.random()*256)  
	var b=Math.floor(Math.random()*256)  
	return"rbg("+r+","+b+","+g+")";      
}                                        



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 Canvas 绘制随机数字验证码的示例代码: ```html <canvas id="captcha" width="120" height="40"></canvas> <button onclick="refresh()">刷新验证码</button> ``` ```javascript const canvas = document.getElementById('captcha'); const ctx = canvas.getContext('2d'); function refresh() { // 清空画布 ctx.clearRect(0, 0, canvas.width, canvas.height); // 绘制背景 ctx.fillStyle = '#f2f2f2'; ctx.fillRect(0, 0, canvas.width, canvas.height); // 绘制随机数字 const code = Math.random().toString().slice(2, 6); ctx.font = 'bold 30px Arial'; ctx.fillStyle = '#333'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillText(code, canvas.width / 2, canvas.height / 2); // 绘制干扰线 for (let i = 0; i < 4; i++) { ctx.beginPath(); ctx.moveTo(Math.random() * canvas.width, Math.random() * canvas.height); ctx.lineTo(Math.random() * canvas.width, Math.random() * canvas.height); ctx.strokeStyle = '#ddd'; ctx.stroke(); } } // 初始化验证码 refresh(); ``` 代码中,我们首先获取了 Canvas 对象和 2D 上下文对象 ctx,然后定义了一个 refresh 函数来生成并绘制随机数字验证码。 在 refresh 函数中,我们首先使用 clearRect 方法清空画布,并使用 fillRect 方法绘制灰色背景。接着,我们使用 Math.random 方法生成一个 4 位的随机数字,使用 fillText 方法将其绘制在画布中央。最后,我们使用 beginPath、moveTo、lineTo、strokeStyle 和 stroke 方法来绘制 4 条随机颜色的干扰线。 最后,我们在 HTML 中添加一个按钮,并设置其 onclick 事件为 refresh 函数,以便用户可以通过点击按钮来刷新验证码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值