画布实现随机验证码

1. html模板:

1 <div class="c-code">
2     <canvas id="c-cvs"></canvas>
3 </div>

2. 使用:

  2.1 引用js文件

  2.2 在模板之外添加一个盒子,宽高必须给,验证码宽高与之相等
  2.3 每调用一次drawBg(),刷新一次
  2.4 drawBg().textArr 得到当前的文本内容存为数组
  2.5 drawBg().text 得到当前的文本内容存为字符串

3. js代码:

(function (w){
	var oCode=document.getElementsByClassName("c-code")[0];
	var cvs=document.getElementById("c-cvs");
	var ctx=cvs.getContext("2d");
	//设置整个内容宽高与父盒子相等
	oCode.style.width="100%";
	oCode.style.height="100%";

	function drawBg(){
		//获取盒子宽高
		this.width=oCode.offsetWidth;
		this.height=oCode.offsetHeight;
		//随机点坐标
		this.randomX=0;
		this.randomY=0;
		//存放验证码内容(数组)
		this.textArr=[];
		//存放验证码内容(字符串)
		this.text="";

		this._init();
		this.draw();
		this.addPoint();
		this.addText();
	}
	drawBg.prototype={
		constructor: drawBg,
		//设置画布宽高
		_init: function (){
			cvs.width=this.width;
			cvs.height=this.height;
		},
		//获取随机的颜色
		randomColor: function (){
			var colorStr="0123456789abcdef";
			var colorArr=colorStr.split("");
			this.color="#";
			//0-15随机数
			var randomNum;
			for (var i = 0; i < 6; i++) {
				randomNum=Math.floor(Math.random()*16)
				this.color+=colorArr[randomNum]
			}
			return this.color;
		},
		//绘制背景
		draw: function (){
			//每次创建先清除画布
			ctx.clearRect(0,0,this.width,this.height);
			ctx.fillStyle=this.randomColor();
			ctx.fillRect(0,0,this.width,this.height);
		},
		//绘制随机点
		randomPoint: function (){
			this.randomX=Math.random()*this.width;
			this.randomY=Math.random()*this.height;
			ctx.fillStyle=this.randomColor();
			ctx.fillRect(this.randomX,this.randomY,2,2);
			ctx.fill();
		},
		//添加多个随机点
		addPoint: function (){
			//生成的点的个数等于(宽*高/10)
			var num=Math.floor(this.width*this.height/10);
			for (var i = 0; i < num; i++) {
				this.randomPoint();
			}
		},
		//添加文本
		addText: function (){
			// 0-61随机数
			var randomNum;
			//textData: (0-9 a-z A-Z)
			var textData=[];
			for(var i=48;i<58;i++){
				textData.push(String.fromCharCode(i));
			}
			for(var i=65;i<91;i++){
				textData.push(String.fromCharCode(i));
			}
			for(var i=97;i<123;i++){
				textData.push(String.fromCharCode(i));
			}

			this.text="";
			this.textArr=[];
			for(var i=0;i<4;i++){
				randomNum=Math.floor(Math.random()*62);
				this.text+=textData[randomNum];
				this.textArr.push(textData[randomNum]);
			}
			//绘制文本
			ctx.font="bold 25px Arial";
			ctx.textAlign="center";
			ctx.textBaseline="middle";
			ctx.fillStyle=this.randomColor;
			ctx.fillText(this.text,this.width/2,this.height/2);
		}
	}

	w.drawBg=function (){
		return new drawBg();
	}
})(window)

 

4. 链接地址( http://hsianglee.top/component/randomCode.html )

时间: 2024-08-05 10:29:07

画布实现随机验证码的相关文章

学习python:实例2.用PIL生成随机验证码

效果: 代码: # 生成随机验证码图片 import string from random import randint, sample from PIL import Image, ImageDraw, ImageFont, ImageFilter # Image 负责处理图片 # ImageDraw 画笔 # ImageFont 文字 # ImageFileter 滤镜 # 定义变量 img_size = (150,50)        # 定义画布大小 img_rgb = (255,255

php学习笔记:利用gd库生成图片,并实现随机验证码

说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码: 备注:建议大家用mt_rand(),而不是rand(),前者效率更高 2.利用gd库生成图片,把随机字符串写到图片输出. 效果: 每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再

【代码实现】PHP生成各种随机验证码

文章来源:PHP开发学习门户  (自行开发的个人网站) 验证码在WEB应用中非常重要,通常用来防止用户恶意提交表单,如恶意注册和登录.论坛恶意灌水等.本文将通过实例讲解使用PHP生成各种常见的验证码包括数字验证码.数字+字母验证码.中文验证码.算术验证码等等以及其Ajax验证过程. 下载示例源码 PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中.PHP生成验证码的大致流程有: 1.产生一张png的图片: 2.为图片设置背景

黑马day04 画一个汉字的随机验证码的图片

下面的程序详细介绍了如何画一个随机验证码发送到客户端即浏览器进行显示: 1.画随机验证码的代码: package cn.itheima.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import j

Android生成随机验证码技术

在Android客户端应用开发中,往往需要短信验证码或者随机验证码来限制用户的操作或者认证.短信验证码是为了对用户进行认证,主要通过Http协议等通信协议实现;随机验证码很大程度是为限制或者提示用户相关操作.随机验证码的验证主要有两种方式:请求服务器验证,本地验证.比如,在用户向服务器发送登录请求,我们通过随机验证码(本地验证即可)限制用户随意按请求按钮,演示如下: 源码实战 (1)src/.../createCode.java 功能:使用Random.Canvas.Paint及其相关方法创建包

生成6位的随机验证码

要求:生成6位的字母和数字组成的随机验证码. 实例1: 1 import random 2 identify_code='' 3 for i in range(1): 4 for j in range(6): 5 if i==j: 6 code=chr(random.randint(65,90)) 7 else: 8 code=random.randint(0,9) 9 identify_code+=str(code) 10 11 print(identify_code) 实例2: 1 impo

Django之路 - 实现登录随机验证码

登录验证码是每个网站登录时的基本标配,网上也有很多相应的文章, 但是从生成验证码到 应用到自己的网站上的全步骤,并没有看到很多, 为了节约大家的时间,我把整体步骤写下来, 即拿即用哈 1. 生成随机验证码  随机验证码代码 2. 如何应用到你的django项目中 整个验证码的流程如下 用户访问登录页面,你的后台程序在给用户返回登录页面时,同时生成了验证码图片 用户输入账户信息和验证码数字,提交表单 后台判断用户输入的验证码和你生成的图片信息是否一致,如果一致,就代表验证码是没有问题的 问题就卡在

输出随机验证码图片

1 /** 2 * //输出随机验证码图片:CAPTCHA图像 3 */ 4 public class ServletDemo1 extends HttpServlet { 5 private static final long serialVersionUID = 1L; 6 7 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx

随机验证码

import java.awt.image.BufferedImage; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletExc