2019独角兽企业重金招聘Python工程师标准>>>

1,html部分

<div class="box"><label class="side">验证码</label><input class="box-flex input-full" id="verify" type="text" placeholder="请输入验证码" ><div class="side" style="width: 100px;margin-left:10px;"><canvas width="100" height="40" id="verifyCanvas"></canvas><img id="code_img"></div></div>

2,js部分

//下面为验证码var nums = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", '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'];drawCode();// 绘制验证码function drawCode() {var canvas = document.getElementById("verifyCanvas");  //获取HTML端画布var context = canvas.getContext("2d");                 //获取画布2D上下文context.fillStyle = "#565656";                  //画布填充色context.fillRect(0, 0, canvas.width, canvas.height);   //清空画布context.fillStyle = "white";                           //设置字体颜色context.font = "25px Arial";                           //设置字体var rand = new Array();var x = new Array();var y = new Array();for (var i = 0; i < 5; i++) {rand[i] = nums[Math.floor(Math.random() * nums.length)]x[i] = i * 16 + 10;y[i] = Math.random() * 20 + 20;context.fillText(rand[i], x[i], y[i]);}//画3条随机线for (var i = 0; i < 3; i++) {drawline(canvas, context);}// 画30个随机点for (var i = 0; i < 30; i++) {drawDot(canvas, context);}convertCanvasToImage(canvas)}// 随机线function drawline(canvas, context) {context.moveTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height));             //随机线的起点x坐标是画布x坐标0位置,y坐标是画布高度的随机数context.lineTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height));  //随机线的终点x坐标是画布宽度,y坐标是画布高度的随机数context.lineWidth = 0.5;                                                  //随机线宽context.strokeStyle = 'rgba(50,50,50,0.3)';                               //随机线描边属性context.stroke();                                                         //描边,即起点描到终点}// 随机点(所谓画点其实就是画1px像素的线,方法不再赘述)function drawDot(canvas, context) {var px = Math.floor(Math.random() * canvas.width);var py = Math.floor(Math.random() * canvas.height);context.moveTo(px, py);context.lineTo(px + 1, py + 1);context.lineWidth = 0.2;context.stroke();}// 绘制图片function convertCanvasToImage(canvas) {document.getElementById("verifyCanvas").style.display = "none";var image = document.getElementById("code_img");image.src = canvas.toDataURL("image/png");return image;}// 点击图片刷新document.getElementById('code_img').onclick = function () {$('#verifyCanvas').remove();$('#verify').after('<canvas width="100" height="40" id="verifyCanvas"></canvas>');drawCode();}

转载于:https://my.oschina.net/u/2393989/blog/2254786

获取验证码canvas相关推荐

  1. 微信小程序获取验证码倒计时

    实现效果图 使用方法: setInterval demo:(如果对 setInterval不了解的可以先百度下) xml 中写一个按钮: <view class="container& ...

  2. 小程序:js获取验证码时(倒计时模块)

    代码例子截图最近在上手开发小程序,发现其实小程序要比vue真的要简单太多了,有一套自己的html(WXML),css(WXSS),虽然有些标签不能直接沿用html5的标签来开发,不过内置的标签还是很好 ...

  3. 免费获取验证码60秒倒计时

    免费获取验证码60秒倒计时 <!DOCTYPE html> <html> <head> <script src="http://libs.baidu ...

  4. selenium 验证码识别_如何获取验证码?

    工作中,如何用python和selenium提取验证码呢? 获取验证码的方法 按照以往的经验,有4种方法: 让开发帮忙去掉验证码代码,重新部署环境 弄个万能验证码,每次登陆都可以登陆 用cookie添 ...

  5. 8.腾讯微博Android客户端开发——自动获取验证码(2)

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

  6. android 保存退出之前的页面_项目实战:Qt+Android模拟操作器(模拟操作app,打开,点击,输入,获取验证码等等)...

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109313803 各位读者,知识无穷而人力有穷 ...

  7. 通过webbrowser控件获取验证码

    1.首先介绍下基本控件(拖控件大家都会,我就不一一介绍了),看下图: 2.添加MSHTML引用,步骤如下: 解决方案-右键"引用"-​添加引用-在.NET下找到Microsoft. ...

  8. 微信小程序之获取验证码js

    在微信小程序中怎样实现获取验证码的倒计时功能捏,倒计时的原理是一样一样的,就是某些地方需要注意. 第一步:结构 <view class='get-code' wx:if="{{!isS ...

  9. 腾讯微博Android客户端开发——自动获取验证码

    上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如UC.天天等,输入完QQ账号信息点击" ...

最新文章

  1. ML之LoRDTRF:基于LoRDT(CART)RF算法对mushrooms蘑菇数据集(22+1,6513+1611)训练来预测蘑菇是否毒性(二分类预测)
  2. 【数据库复习】第二章关系数据库
  3. XAML实例教程系列 - 命名空间(NameSpace) 三
  4. linux 内核编号含义_如何阅读linux内核代码?
  5. [渝粤教育] 盐城师范学院 光学 参考 资料
  6. sql 删除依赖_关系数据库标准语言SQL(二)
  7. 玩转 SpringBoot 2 之整合定时任务篇
  8. ArchLinux pacman 提高俩倍下载速度方法
  9. 2019年新年第一天,我也制定一下2019年计划,
  10. linux 内核配置ip地址,linux内核IP地址转换函数
  11. win7下桌面IE快捷方式无法删除解决方法
  12. RxSwift学习记录
  13. 服务器的类型都有哪些
  14. cad2012打开后闪退_为什么CAD2012一打开就闪退啊。求大神解答
  15. Django 基础(6)-路由Routers-SimpleRouter-DefaultRouter、 action装饰器、URL路径参数
  16. Http 3840 错误
  17. mysql substr无效_mysql substr()函数用法
  18. Android电子书阅读器开发笔记(1):创建电子书阅读器项目
  19. c语言监视哨用法,C++ 实现带监视哨的顺序查找算法
  20. 全国计算机等级考试三级信息安全技术考试大纲(2018 年版)

热门文章

  1. Kotlin与Java之争
  2. 中间件(1)分布式缓存
  3. Msc系统上的eclipse遇到乱码问题解决方式
  4. 逻辑备库之ORA-01403解决方法
  5. 使用 Label 类在 XNA 中显示文本,WPXNA(七)
  6. 1/100. Jewels and Stones
  7. SpringBoot------Servlet3.0的注解自定义原生Listener监听器
  8. Code First 迁移
  9. 《JavaScript高级程序设计》Chapter 5 引用类型
  10. maven 包的导入