使用canvas及js简单生成验证码方法

我们在做开发的时候会经常涉及到验证码,前端的验证码需要用到HTML5中的canvas的知识点,然后再结合js来控制验证数字就可以达到验证码的效果了.

  1. 随机生成一张canvas画布
  2. 生成随机验证码
  3. 在画布中随机生成干扰线
  4. 把随机验证码放到画布上面
  5. 点击更换验证码

结构与样式:

1 <style>
2       #mycanvas{
3                   cursor: pointer;/*光标为手型*/
4                 }
5 </style>
6     </head>
7     <body>
8         <canvas id="mycanvas" width=‘500‘ height=‘100‘></canvas>

js代码:

/*生成4位随机数*/
 function rand(){
  var str="abcdefghijklmnopqrstuvwxyz0123456789";
  var arr=str.split("");
  var validate="";
  var ranNum;
  for(var i=0;i<5;i++){
   ranNum=Math.floor(Math.random()*36); //随机数在[0,35]之间
   validate+=arr[ranNum];
  }
  return validate;
 }
 /*干扰线的随机x坐标值*/
 function lineX(){
  var ranLineX=Math.floor(Math.random()*90);
  return ranLineX;
 }
 /*干扰线的随机y坐标值*/
 function lineY(){
  var ranLineY=Math.floor(Math.random()*40);
  return ranLineY;
 }
 function clickChange(){
  var mycanvas=document.getElementById(‘mycanvas‘);
  var cxt=mycanvas.getContext(‘2d‘);
  cxt.fillStyle=‘#000‘;
  cxt.fillRect(0,0,90,40);
  /*生成干扰线20条*/
  for(var j=0;j<20;j++){
   cxt.strokeStyle=‘#fff‘;
   cxt.beginPath(); //若省略beginPath,则每点击一次验证码会累积干扰线的条数
    cxt.moveTo(lineX(),lineY());
   cxt.lineTo(lineX(),lineY());
   cxt.lineWidth=0.5;
   cxt.closePath();
   cxt.stroke();
  }
  cxt.fillStyle=‘red‘;
  cxt.font=‘bold 20px Arial‘;
  cxt.fillText(rand(),25,25); //把rand()生成的随机数文本填充到canvas中
 }
 /*点击验证码更换*/
 clickChange();
 mycanvas.onclick=function(e){
  e.preventDefault(); //阻止鼠标点击发生默认的行为
  clickChange();
 };

效果图:

大功告成,假如你不喜欢背景颜色或者线条的颜色可以稍微更改。

时间: 2024-10-27 07:04:05

使用canvas及js简单生成验证码方法的相关文章

生成验证码方法

/**   * 生成验证码方法    * 创建指定数量的随机字符串   * @param numberFlag 是否是数字   * @param length   * @return   */  public static String createRandom(boolean numberFlag, int length){   String retStr = "";   String strTable = numberFlag ? "1234567890" :

C# 生成验证码 方法二

新建类ValidateCode 引用 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Web; publi

yii2 生成验证码方法

1在控制器添加一下代码public function actionCaptcha(){ $c = Yii::createObject('yii\captcha\CaptchaAction', ['__captcha', $this]); $c->getVerifyCode(true); return $c->run();} 2.通过以下方法调用验证码 $c = Yii::createObject('yii\captcha\CaptchaAction', ['__captcha', $this]

js随机生成验证码及其颜色

css样式: <style type="text/css"> /*给验证码设一个盒子*/ #yzm{ width: 120px; height: 50px; text-align: center; background: #ccc; float: left; } span{ font-size: 20px; line-height: 50px; } /*按钮*/ button{ width: 100px; height: 50px; } </style> htm

php简单生成验证码图片

<?php $i=imagecreatetruecolor(100, 30); $iColor=imagecolorallocate($i, 240, 240, 240); imagefill($i, 0, 0, $iColor); $str="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPSDFGHJKLZXCVBNM"; $nStr=str_shuffle($str); $fourStr=substr($nStr, 0,4); f

用java Graphics生成验证码

以下下是API文档对Graphics的介绍! Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制. Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息.此状态信息包括以下属性: 要在其上绘制的 Component 对象. 呈现和剪贴坐标的转换原点. 当前剪贴区. 当前颜色. 当前字体. 当前逻辑像素操作函数(XOR 或 Paint). 当前 XOR 交替颜色(参见 setXORMode(java.awt.Colo

Springboot 生成验证码

技术:springboot+kaptcha+session 概述 场景介绍 验证码,用于web网站.用户点击验证码图片后,生成验证码.提交后,用户输入验证码和Session验证码,进行校验. 详细 代码下载:http://www.demodashi.com/demo/14864.html 一.目录结构 二.功能讲解 (1)验证码配置文件 打开KaptchaConfig.java @Component public class KaptchaConfig { @Bean public Defaul

小工具 ——快速生成验证码

介绍一款简单实用的生成验证码插件Captcha 首先安装插件  pip install Captcha 编辑器代码如下: #导入captcha插件下image方法 from captcha.image import ImageCaptcha #导入PIL图像处理标准库 from PIL import Image import random import time import os #定义随机方法 def random_captcha(): #做一个容器 captcha_text = [] fo

JS简单入门教程

JS简单教程 使用方法:放到任意html页面的head标签下 Test1方法弹出当前时间对话框 Test2方法for循环输出 Test3方法for(…in…)输出数组内容 <script type="text/javascript"> var a = 10; var b = 11; if (a < b) { document.write("hello man") } else { document.write("hello world&q