js+canvas绘制图形验证码


Posted in Javascript onSeptember 21, 2020

本文实例为大家分享了利用canvas绘制图形验证码的具体代码,供大家参考,具体内容如下

思路:通过随机获取指定字符串的指定数的字符,通过canvas绘制出来

返回指定范围的随机整数

//指定范围的随机函数:返回指定范围内的随机整数
function rand(min, max) {
    /*
    max=10
    min=1

      Math.random()=0  最小取到1
      Math.random()=0.9999*10=Math.floor(9.9)=>+1=10

    */
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }

返回指定数量的随机字符串

function randStr(count) {
    var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var code = '';
    for (var i = 0; i < count; i++) {

      var index = rand(0, str.length - 1)//必须减一否则会出现下标越界
      code += str.charAt(index) + ' ';
    }
    return code
  }

绘制图形

function verify(selector) {
    //获取canvas的dom对象
    var cas = document.querySelector(selector);
    //获取上下文对象
    var ctx = cas.getContext('2d');
    //指定接收的字符串
    var code = randStr(5);

    //绘制矩形,作背景色
    ctx.fillStyle = 'orange';
    //绘制实心矩形
    ctx.fillRect(0, 0, 160, 50)


    //文字居中
    // ctx.textAlign = 'left'
    //字体样式的属性要遵循css中的书写顺序
    ctx.font = '900 24px 宋体'
    //设置字体颜色
    ctx.fillStyle = '#FFF';
    //绘制文字
    ctx.fillText(code, 20, 30);
  }

鼠标点击更新验证码

document.querySelector('canvas').addEventListener('click', function () {
    verify('canvas')
  })

完整代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>绘制图形验证码</title>
  <style>
    canvas {
      border: 1px solid red;
    }
  </style>
</head>

<body>
  <canvas width="160" height="50"></canvas>
</body>
<script>

  verify('canvas')
  document.querySelector('canvas').addEventListener('click', function () {
    verify('canvas')
  })
  function verify(selector) {
    //获取canvas的dom对象
    var cas = document.querySelector(selector);
    //获取上下文对象
    var ctx = cas.getContext('2d');
    //指定接收的字符串
    var code = randStr(5);

    //绘制矩形,作背景色
    ctx.fillStyle = 'orange';
    //绘制实心矩形
    ctx.fillRect(0, 0, 160, 50)

    //字体样式的属性要遵循css中的书写顺序
    ctx.font = '900 24px 宋体'
    //设置字体颜色
    ctx.fillStyle = '#FFF';
    //绘制文字
    ctx.fillText(code, 20, 30);
  }




  //指定范围的随机函数:返回指定范围内的随机整数
  function rand(min, max) {
    /*
    max=10
    min=1

      Math.random()=0  最小取到1
      Math.random()=0.9999*10=Math.floor(9.9)=>+1=10

    */
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }

  //返回随机字符串
  function randStr(count) {
    var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var code = '';
    for (var i = 0; i < count; i++) {

      var index = rand(0, str.length - 1)//必须减一否则会出现下标越界
      code += str.charAt(index) + ' ';
    }
    return code
  }
  // console.log(randStr(6))
</script>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
Mar 15 Javascript
JavaScript中使用Callback控制流程介绍
Mar 16 Javascript
javascript+html5实现仿flash滚动播放图片的方法
Apr 27 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
jQuery中JSONP的两种实现方式详解
Sep 26 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
Mar 29 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
Javascript查看大图功能代码实现
May 07 Javascript
vue中路由跳转不计入history的操作
Sep 21 #Javascript
JS实现放大镜效果
Sep 21 #Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 #Javascript
Vue Element校验validate的实例
Sep 21 #Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 #Javascript
vue3.0 上手体验
Sep 21 #Javascript
微信小程序实现点击页面出现文字
Sep 21 #Javascript
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python开发的实用计算器完整实例
2017/05/10 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
初中生物教学反思
2014/01/10 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
项目战略合作意向书
2015/05/08 职场文书
办公用品质量保证书
2015/05/11 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python