文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS如何实现图片验证码功能

2023-06-30 09:15

关注

本篇内容主要讲解“JS如何实现图片验证码功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS如何实现图片验证码功能”吧!

1. html代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script src="<%=request.getContextPath()%>/js/gVerify.js"></script><style type="text/css">body, html {    width: 100%;    text-align: center;}#picyzm {    width: 100px;    height: 40px;    display: inline-block;    margin: 0 30px;}#verifyCodeDemo {    width: 100%;    display: flex;    margin-top: 200px;    justify-content: center;}#btn {    margin: 30px auto;    background-color: blue;    color: #fff;    border-radius: 5px;    border: 0;    width: 100px;    height: 40px;}</style></head><body>    <div id="verifyCodeDemo">        <input type="text" id="code_input" placeholder="在这个框里输入验证码">        <p id="picyzm"></p>    </div>    <input type="button" value="验证" id="btn">       <script type="text/javascript">        //初始化验证码        var verifyCode = new GVerify({            id : "picyzm",            type : "blend"        });        //点击按钮验证        var code = document.getElementById("code_input");        var btn = document.getElementById("btn");        btn.onclick = function() {            var res = verifyCode.validate(code.value);            if (res) {                alert("验证通过");            } else {                alert("验证码错误");            }        }    </script></body></html>

2. 引入gVerify.js

!(function(window, document) {    function GVerify(options) { // 创建一个图形验证码对象,接收options对象为参数        this.options = { // 默认options参数值            id: "", // 容器Id            canvasId: "verifyCanvas", // canvas的ID            width: "100", // 默认canvas宽度            height: "30", // 默认canvas高度            type: "blend", // 图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母            code: ""        }                if(Object.prototype.toString.call(options) == "[object Object]"){// 判断传入参数类型            for(var i in options) { // 根据传入的参数,修改默认参数值                this.options[i] = options[i];            }        }else{            this.options.id = options;        }                this.options.numArr = "0,1,2,3,4,5,6,7,8,9".split(",");        this.options.letterArr = getAllLetter();        this._init();        this.refresh();    }    GVerify.prototype = {                version: '1.0.0',                        _init: function() {            var con = document.getElementById(this.options.id);            var canvas = document.createElement("canvas");            this.options.width = con.offsetWidth > 0 ? con.offsetWidth : "100";            this.options.height = con.offsetHeight > 0 ? con.offsetHeight : "30";            canvas.id = this.options.canvasId;            canvas.width = this.options.width;            canvas.height = this.options.height;            canvas.style.cursor = "pointer";            canvas.innerHTML = "您的浏览器版本不支持canvas";            con.appendChild(canvas);            var parent = this;            canvas.onclick = function(){                parent.refresh();            }        },                        refresh: function() {            this.options.code = "";            var canvas = document.getElementById(this.options.canvasId);            if(canvas.getContext) {                var ctx = canvas.getContext('2d');            }else{                return;            }                        ctx.textBaseline = "middle";            ctx.fillStyle = randomColor(180, 240);            ctx.fillRect(0, 0, this.options.width, this.options.height);            if(this.options.type == "blend") { // 判断验证码类型                var txtArr = this.options.numArr.concat(this.options.letterArr);            } else if(this.options.type == "number") {                var txtArr = this.options.numArr;            } else {                var txtArr = this.options.letterArr;            }            for(var i = 1; i <= 4; i++) {                var txt = txtArr[randomNum(0, txtArr.length)];                this.options.code += txt;                ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; // 随机生成字体大小                ctx.fillStyle = randomColor(50, 160); // 随机生成字体颜色                ctx.shadowOffsetX = randomNum(-3, 3);                ctx.shadowOffsetY = randomNum(-3, 3);                ctx.shadowBlur = randomNum(-3, 3);                ctx.shadowColor = "rgba(0, 0, 0, 0.3)";                var x = this.options.width / 5 * i;                var y = this.options.height / 2;                var deg = randomNum(-30, 30);                                ctx.translate(x, y);                ctx.rotate(deg * Math.PI / 180);                ctx.fillText(txt, 0, 0);                                ctx.rotate(-deg * Math.PI / 180);                ctx.translate(-x, -y);            }                        for(var i = 0; i < 4; i++) {                ctx.strokeStyle = randomColor(40, 180);                ctx.beginPath();                ctx.moveTo(randomNum(0, this.options.width), randomNum(0, this.options.height));                ctx.lineTo(randomNum(0, this.options.width), randomNum(0, this.options.height));                ctx.stroke();            }                        for(var i = 0; i < this.options.width/4; i++) {                ctx.fillStyle = randomColor(0, 255);                ctx.beginPath();                ctx.arc(randomNum(0, this.options.width), randomNum(0, this.options.height), 1, 0, 2 * Math.PI);                ctx.fill();            }        },                        validate: function(code){            var code = code.toLowerCase();            var v_code = this.options.code.toLowerCase();            if(code == v_code){                return true;            }else{                return false;            }        }    }        function getAllLetter() {        var letterStr = "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";        return letterStr.split(",");    }        function randomNum(min, max) {        return Math.floor(Math.random() * (max - min) + min);    }        function randomColor(min, max) {        var r = randomNum(min, max);        var g = randomNum(min, max);        var b = randomNum(min, max);        return "rgb(" + r + "," + g + "," + b + ")";    }    window.GVerify = GVerify;})(window, document);

3. 效果图

JS如何实现图片验证码功能

JS如何实现图片验证码功能

到此,相信大家对“JS如何实现图片验证码功能”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯