广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript如何生成图形验证码
  • 589
分享到

JavaScript如何生成图形验证码

2024-04-02 19:04:59 589人浏览 泡泡鱼
摘要

这篇文章主要介绍javascript如何生成图形验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下getGVerify:function (id)  

这篇文章主要介绍javascript如何生成图形验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体内容如下

getGVerify:function (id)
  {
 
    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");
        
        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');
        }
        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 = '20px SimHei';
          //ctx.font = randomNum(this.options.height/2, this.options.height) + 'px SimHei'; //随机生成字体大小
          ctx.fillStyle = randomColor(50, 160); //随机生成字体颜色
          
          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/2), randomNum(0, this.options.height/2));
          ctx.lineTo(randomNum(0, this.options.width/2), 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 verifyCode = code.toLowerCase();
        var v_code = this.options.code.toLowerCase();
        if(verifyCode == 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 + ")";
    }
 
    return new GVerify(id);
  }

调用方法

var verifyCode = new GVerify(id);

验证方法

if(verifyCode.validate(inputCode)){
   return true;
}esle{
   return false;
}

以上是“JavaScript如何生成图形验证码”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: JavaScript如何生成图形验证码

本文链接: https://www.lsjlt.com/news/67451.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript如何生成图形验证码
    这篇文章主要介绍JavaScript如何生成图形验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下getGVerify:function (id)  ...
    99+
    2022-10-19
  • PHP生成图形验证码
    PHP生成图形验证码 效果:随机生成6位验证码,100个干扰的黑点,一条干扰线 代码:https://blog.csdn.net/weixin_41957626/article/details/image.php(生成验证码)和che...
    99+
    2023-09-07
    php 开发语言
  • SpringBoot 图形验证码的生成和校验
    目录1. 编写工具类2. 编写 Controller 中的接口3. 获取验证码图片另一种方法1.添加依赖2.全部代码1. 编写工具类 package com.cn.beauty....
    99+
    2022-11-12
  • python生成随机图形验证码详解
    使用python生成随机图片验证码,需要使用pillow模块 1.安装pillow模块 pip install pillow 2.pillow模块的基本使用 1.创建图片 from PIL imp...
    99+
    2022-06-04
    验证码 详解 图形
  • 怎么使用Matlab制作图形验证码生成器
    这篇文章主要介绍了怎么使用Matlab制作图形验证码生成器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。突然发现cla函数也可以应用到app designer控件上,因而对部...
    99+
    2023-06-29
  • python图片验证码生成代码
    本文实例为大家分享了python图片验证码实现代码,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding: UTF-8 -*- import random ...
    99+
    2022-06-04
    验证码 代码 图片
  • Vue如何实现图片验证码生成
    这篇文章主要介绍“Vue如何实现图片验证码生成”,在日常操作中,相信很多人在Vue如何实现图片验证码生成问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现图片验证码生成”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • 教你使用Matlab制作图形验证码生成器(appdesigner)
    目录1字符图片生成2刷新按钮生成3图片处理3.1图像任意方向拉伸3.2字符边缘3.3图像处理部分代码4线条和散点生成5关于图像存储6关于验证码对比7完整代码突然发现cla函数也可以应...
    99+
    2022-11-13
  • 微信小程序canvas2d生成图形验证码的方法
    本文实例为大家分享了微信小程序canvas2d生成图形验证码的具体代码,供大家参考,具体内容如下 成品展示: 背景: 大致看了一下网上已经有一些canvas生成图形验证码的demo...
    99+
    2022-11-13
  • Vue实现图片验证码生成
    图片验证码主要用于注册,登录等提交场景中,目的是防止脚本进行批量注册、登录、灌水,相比不带图片验证的安全度有所提高,不过目前也有自动识别图片验证码的程序出现,基本都是付费识别,随之又...
    99+
    2022-11-13
  • PHP怎么生成图片验证码
    本篇内容介绍了“PHP怎么生成图片验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!5种PHP生成图片验证码实例,包括数字验证码、数字+字...
    99+
    2023-06-04
  • 怎么使用微信小程序canvas2d生成图形验证码
    本篇内容主要讲解“怎么使用微信小程序canvas2d生成图形验证码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用微信小程序canvas2d生成图形验证码”吧!成品展示:背景:大致看了一下...
    99+
    2023-06-30
  • python生成验证码图片代码分享
    本文实例为大家分享了python生成验证码图片代码,分享给大家供大家参考,具体内容如下 基本上大家使用每一种网络服务都会遇到验证码,一般是网站为了防止恶意注册、发帖而设置的验证手段。其生成原理是将一串随机产...
    99+
    2022-06-04
    验证码 代码 图片
  • python生成图片验证码的方法
    背景 在注册或者登陆场景下,经常会遇到需要输入图片验证码的情况,最经典的就是12306买火车票。图片验证码的破解还是有一定难度的,而且如果配合上时间和次数的验证,可以很大程度上防止模...
    99+
    2022-11-10
  • Java使用Servlet生成验证码图片
    本文实例为大家分享了Java使用Servlet生成验证码图片的具体代码,供大家参考,具体内容如下 一、实现思路 1、使用BufferedImage用于在内存中存储生成的验证码图片 2...
    99+
    2022-11-12
  • JavaScript实现随机生成验证码及校验
    本文实例为大家分享了JavaScript实现随机生成验证码及校验的具体代码,供大家参考,具体内容如下 输入验证码(区分大小写)点击确认,进行校验。出错就弹框提示 点击 看不清 重新随...
    99+
    2022-11-12
  • 使用java如何生成一个验证码图片
    本文章向大家介绍使用java如何生成一个验证码图片的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程...
    99+
    2023-06-06
  • JavaScript中怎么生成随机验证码
    这篇文章将为大家详细讲解有关JavaScript中怎么生成随机验证码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。利用canvas制作一个随机验证码:  1...
    99+
    2022-10-19
  • QT如何生成随机验证码
    这篇“QT如何生成随机验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“QT如何生成随机验证码”文章吧。一、先创建一个QT...
    99+
    2023-07-02
  • java后台验证码如何生成
    这篇文章给大家分享的是有关java后台验证码如何生成的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图如下:1.适用需求后台生成验证码,用于登陆验证。2. 功能实现所需控件/文件:无(普通标签)3.功能点实现思...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作