利用canvas制作一个随机验证码:

  1、clearRect:context.clearRect(x,y,width,height);清空给定矩形内的指定像素

  2、fillStyle:设置画笔的颜色

  3、rotate(deg):旋转角度,以弧度旋转(弧度=degrees*Math.PI/180 )

  4、translate(): 方法重新映射画布上的位置  

  5、Math.random():获取0-1之间的一个随机数,不包含1

  

<!-- HTML -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>canvas随机验证码</title>
</head>
<body>
<canvas id="canvas" width="100" height="40" style="border: 1px solid red;display: block;margin: 0 auto;"></canvas>
</body>
<script type="text/javascript">
var myCanvas = document.querySelector("#canvas");
var blur = myCanvas.getContext("2d");
// 当点击画布时创建一个新的路径
// 验证码封装
myCanvas.onclick = function() {
// 实现点击画布创建一个新的验证码
blur.clearRect(0,0,100,40);
verify();
}
verify();
function verify() {
// 绘制矩形框
// blur.strokeRect(0,0,100,40);
// 随机验证码
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "s", "t", "u",
"v", "w", "x", "y", "z", "A", "B", "C", "D", "F", "G", "H", "I", "J", "K", "L", "S", "T", "U", "V", "W", "X", "Y",
"Z"
];
// 显示四位数的验证码
for (var i = 0; i < 4; i++) {
var x = 20 + 20 * i;
var y = 20 + 10 * Math.random();
// console.log(x,y);
// 在数组中获取到随机的索引整数
var index = Math.floor(Math.random() * arr.length);
// 通过随机的索引获取到随机的元素
var texts = arr[index];
// 设置验证码的相关样式
blur.font = "bold 20px 微软雅黑";
blur.fillStyle = textColor();
// 画布旋转显示
// translate() 方法重新映射画布上的位置
blur.translate(x, y);
// 将画布旋转,旋转角度,以弧度旋转(弧度=degrees*Math.PI/180 )
var deg = 90 * Math.random() * Math.PI / 180;
blur.rotate(deg); //
blur.fillText(texts, 0, 0);
// 将画布映射返回原来的位置
blur.rotate(-deg);
blur.translate(-x, -y);
} // 制作验证码的干扰线制作
for(var i=0;i<6;i++){
blur.beginPath();
blur.moveTo(Math.random()*100,Math.random()*40);
blur.lineTo(Math.random()*100,Math.random()*40);
// 设置干扰线的颜色
blur.strokeStyle=textColor();
blur.stroke();
}
// 制作验证码的干扰圆点
for(var i=0;i<20;i++){
blur.beginPath();
var x=Math.random()*100;
var y=Math.random()*100;
blur.moveTo(x,y);
blur.lineTo(x+1,y+1);
// 设置干扰线的颜色
blur.strokeStyle=textColor();
blur.stroke();
}
}
// 获取随机颜色封装
function textColor(){
var red=Math.floor(Math.random()*256);
var green=Math.floor(Math.random()*256);
var blue=Math.floor(Math.random()*256);
return "rgb("+red+","+green+","+blue+")";
}
</script>
</html>
x 要清除的矩形左上角的 x 坐标
y 要清除的矩形左上角的 y 坐标
width 要清除的矩形的宽度,以像素计
height 要清除的矩形的高度,以像素计

JavaScript随机验证码的更多相关文章

  1. 伪验证码(含随机验证码方法)js+css

    HTML----------------------------------------------<!DOCTYPE html><html><head><m ...

  2. C#生成随机验证码例子

    C#生成随机验证码例子: 前端: <tr> <td width=" align="center" valign="top"> ...

  3. php实现动态随机验证码机制(CAPTCHA)

    php实现动态随机验证码机制 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Ap ...

  4. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  5. PYTHON 随机验证码生成

    # 生成一个六位随机验证码 import random # random 生成随机数 temp = '' for i in range(6): num = random.randrange(0,6) ...

  6. Java生成随机验证码

    package com.tg.snail.core.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  7. js用正则表达式验证用户和密码的安全性,生成随机验证码

    制作了一个表单,表单验证用户.密码.随机验证码 html页面

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

    说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...

  9. python_way,day4 内置函数(callable,chr,随机验证码,ord),装饰器

    python_way,day4 1.内置函数 - 下 制作一个随机验证码 2.装饰器 1.内置函数 - 下 callable() #对象能否被调用 chr() #10进制数字对应的ascii码表中的内 ...

随机推荐

  1. windows下xampp安装rabbitmq的PHP扩展AMQP

    windows上使用的php扩展为dll文件,首先去下载dll文件,可以到 https://pecl.php.net/package/amqp 选择对应的版本下载 下载压缩包解压后,把里面的两个dll ...

  2. 官网引用的axios,lodash文件在脚手架中如何使用?

    对于官网属性与侦听器模块,所引用的以下文件在脚手架中如何使用? <script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/ ...

  3. (翻译) closures-are-not-complicated

    总计:读完这篇文章需要20分钟   这篇文章讲解了闭包的一些内容,作者是拿ES5规范中的一些名词来讲的. 所以可能和博客上一篇文章中提到的binding object, (lexical enviro ...

  4. 下了个pkg包的jenkins,的使用方法

    三.如何启动Jenkins1.最简单的方法是双击Jenkins的pkg包,一步一步点同意,默认8080端口2.使用命令行启动打开terminal,进入到war包所在目录,执行命令: java -jar ...

  5. spring mvc 返回JSON数据

    servlet相关XML配置 <!--这个不启用会报错--><mvc:annotation-driven /> <bean class="org.springf ...

  6. centos7 vim环境优化

    centos7默认是使用vi,而不是使用vim,所以,我们需要修改一下vi的别名,并且,我们使用neovim,vi毕竟还是有很多功能比较原始 所以 yum install neovim -ycat & ...

  7. 我是如何提高工作效率的-工具篇(一)-Clover

    痛点: 还在为资源管理器窗口切来切去烦恼吗? 效果图: 实现工具:Clover 放个链接 链接:https://pan.baidu.com/s/1UiUQZtE99fMNDe1f2gOnlg   提取 ...

  8. java面试考点-HashTable/HashMap/ConcurrentHashMap

    HashTable 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低 HashMap 结构同HashTable,键值对允许为null,线程不安全, 默认初始 ...

  9. skywalking 的安装部署及其远程应用

    环境配置 centos 7.6 jdk 1.8 elasticsearch5.6.8 skyWalking3.2.6 1.安装elasticsearch wget https://artifacts. ...

  10. 01.04 linux命令(2

    ======================Linux下的用户管理==============用户信息保存/etc/passwd ,一般用户都有读的权限真正的用户:修改密码,可以登录伪用户:应用程序在 ...