<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<input type="text" name="" id="input"><button onclick="confirm()">确定</button>
<canvas id="canvas" onclick="draw()" width="100px" height="40px"></canvas>
</div>
</body>
<script>
function confirm(){
var val = document.querySelector("#input").value;
var str = endvalue.join("");
if(val != str){
alert("验证码有误!!")
draw();
}else{
alert("验证通过")
}
}
//生成随机字符图片
function draw() {
var canvas_width = document.getElementById("canvas").clientWidth;
var canvas_height = document.getElementById("canvas").clientHeight;
var canvas = document.getElementById("canvas"); //获取到canvas的对象,演员
var context = canvas.getContext("2d"); //获取到canvas画图的环境,演员表演的舞台
canvas.width = canvas_width;
canvas.height = canvas_height;
var sCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";
var aCode = sCode.split(",");
var aLength = aCode.length; //获取到数组的长度
var valueTxt = [];
for (var i = 0; i <= 3; i++) {
var j = Math.floor(Math.random() * aLength); //获取到随机的索引值
var deg = (Math.random() * 20 * Math.PI) / 180; //产生0~20之间的随机弧度
var txt = aCode[j]; //得到随机的一个内容
var x = 5 + i * 20; //文字在canvas上的x坐标
var y = 20 + Math.random() * 10; //文字在canvas上的y坐标
context.font = "bold 30px 微软雅黑";
context.translate(x, y);
context.rotate(deg);
context.fillStyle = randomColor();
context.fillText(txt, 5, 5);
context.rotate(-deg);
context.translate(-x, -y);
valueTxt.push(txt);
}
for (var i = 0; i <= 9; i++) {
//验证码上显示线条
context.strokeStyle = randomColor();
context.beginPath();
context.moveTo(
Math.random() * canvas_width,
Math.random() * canvas_height
);
context.lineTo(
Math.random() * canvas_width,
Math.random() * canvas_height
);
context.stroke();
}
for (var i = 0; i <= 390; i++) {
//验证码上显示小点
context.strokeStyle = randomColor();
context.beginPath();
var x = Math.random() * canvas_width;
var y = Math.random() * canvas_height;
context.moveTo(x, y);
context.lineTo(x + 1, y + 1);
context.stroke();
}
return valueTxt;
}
function randomColor() {
//得到随机的颜色值
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
return "rgb(" + r + "," + g + "," + b + ")";
}
var endvalue = draw();
console.log(endvalue,"valueTxt")
</script>
</html>
前端生成随机文字图片验证码
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- > 个人博客 [https://duanruilong.github.io/blog/](https://duan...
- 图片使用本地图片的时候可以正常加载 ,如果换成URL后 加载不出来 建议检查一下结尾是否是.png 或者别的我...