效果图:

代码如下:

<!DOCTYPE html>
<html>
<!-- head -->
<head><title>图片登录验证</title>
</head>
<body><input type="text" value="" placeholder="请输入验证码(区分大小写)" style="height:43px;position: relative; top:-15px; font-size:20px;"id ="text"><canvas id="canvas" width="100" height="43" onclick="dj()" style="border: 1px solid #ccc;border-radius: 5px;"></canvas><button class="btn" onclick="sublim()">提交</button></body>
<script>var show_num = [];draw(show_num);
function dj(){draw(show_num);   }
function sublim(){
var val=document.getElementById("text").value;  var num = show_num.join("");if(val==''){alert('请输入验证码!');}else if(val == num){alert('提交成功!');document.getElementById(".input-val").val('');draw(show_num);}else{alert('验证码错误!\n你输入的是:  '+val+"\n正确的是:  "+num+'\n请重新输入!');document.getElementById("text").value='';draw(show_num);}}
function draw(show_num) {var canvas_width=document.getElementById('canvas').clientWidth;var canvas_height=document.getElementById('canvas').clientHeight;var canvas = document.getElementById("canvas");//获取到canvas的对象,演员var context = canvas.getContext("2d");//获取到canvas画图的环境,演员表演的舞台canvas.width = canvas_width;canvas.height = canvas_height;var sCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m";var aCode = sCode.split(",");var aLength = aCode.length;//获取到数组的长度for (var i = 0; i <= 3; i++) {var j = Math.floor(Math.random() * aLength);//获取到随机的索引值var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度var txt = aCode[j];//得到随机的一个内容show_num[i] = txt;var x = 10 + i * 20;//文字在canvas上的x坐标var y = 20 + Math.random() * 8;//文字在canvas上的y坐标context.font = "bold 23px 微软雅黑";context.translate(x, y);context.rotate(deg);context.fillStyle = randomColor();context.fillText(txt, 0, 0);context.rotate(-deg);context.translate(-x, -y);}for (var i = 0; i <= 5; i++) { //验证码上显示线条context.strokeStyle = randomColor();context.beginPath();context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);context.stroke();}for (var i = 0; i <= 30; i++) { //验证码上显示小点context.strokeStyle = randomColor();context.beginPath();var x = Math.random() * canvas_width;var y = Math.random() * canvas_height;context.moveTo(x, y);context.lineTo(x + 1, y + 1);context.stroke();}}
function randomColor() {//得到随机的颜色值var r = Math.floor(Math.random() * 256);var g = Math.floor(Math.random() * 256);var b = Math.floor(Math.random() * 256);return "rgb(" + r + "," + g + "," + b + ")";}
</script></html>

HTML+js图片验证码编写相关推荐

  1. SSM 实训笔记 -10- 使用 sessionStorage 存储数据、js 图片验证码、登录加载动画

    SSM 实训笔记 -10- 使用 sessionStorage 存储数据.js 图片验证码.登录加载动画 本篇内容: (1)在登录成功时,使用 sessionStorage 存储用户的用户名,并在登录 ...

  2. 纯js图片验证码Captcha.js

    /**  * @class Captcha  * @author 吹懜到汐州  * @description Captcha Generation  * @param el:  * @param op ...

  3. html验证码图片,js+h5 canvas实现图片验证码

    本文实例为大家分享了js+h5 canvas实现图片验证码的具体代码,供大家参考,具体内容如下 实现效果 一.使用技术 原生js技术+html5 canvas画图 利用Math.random()函数随 ...

  4. Flsak项目--图片验证码

    0. 图片验证码的使用流程 2.后端接口编写 verify_code.py中编写接口代码: # coding:utf-8from . import api from ihome.utils.captc ...

  5. 手机验证码、图片验证码的实现

    手机验证码 第一步:网上找一个第三方短信接口平台,大多数这样的平台都会有免费试用的通知短信.我这里用的是秒滴科技,注册个账号,赠送200条短信,足够项目练手使用了. 第二步:去用户中心查看TOKEN( ...

  6. 实现Java生成随机图片验证码

    前言 这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1.项 ...

  7. ssm框架下手机验证码、图片验证码的实现

    手机验证码 第一步:网上找一个第三方短信接口平台,大多数这样的平台都会有免费试用的通知短信.我这里用的是秒滴科技,注册个账号,赠送200条短信,足够项目练手使用了. 第二步:去用户中心查看TOKEN( ...

  8. 怎样用Java自制优秀的图片验证码?这样!

    Completely Automated Public Turing test to tell Computers and Humans Apart 全自动区分计算机和人类的图灵测试 简称CAPTCH ...

  9. 图片验证码防暴力破解_Java

    实现一个简单的登录验证码 实现原理 1.后台生成验证码传到页面 2.登录验证输入验证码是否正确 实现过程 1.引入一个生成验证码的工具类,网上很多 随便找一个根据需求改一下就可以 package co ...

最新文章

  1. python和javascript交互_python和js交互调用的方法
  2. 【错误里程表】8进制转10进制
  3. php 输出 echo、print_r、print、var_dump 、die 区别
  4. Qt学习笔记-----Graphics_View_Framework
  5. JS中的prototype、__proto__与constructor(图解)
  6. 使用SynchronousQueue实现生产者/消费者
  7. Java面向对象(3.1)--方法的重载,可变个数的形参,值传递机制,递归
  8. ulead gif animator_搞笑GIF趣图:这风看来很大啊,今天回不来家了7
  9. Facebook将偷来的3D对象数据库用于其AI项目:被诉讼
  10. Swoole 结合TP5创建http服务
  11. Atitit 图像处理30大经典算法attilax总结
  12. 2021WordPress转z-blog搬家教程_WordPress搬家zblog博客程序工具
  13. Word serach(Medium)
  14. html5对锚的更改,HTML5之锚链接
  15. html、css --苏宁官网静态界面
  16. 基于51单片机的火焰报警器
  17. python--转换wrf输出的风场数据为网页可视化的json格式
  18. Qt获取QTextEdit中的内容
  19. Android源代码编译原理与前期准备
  20. 关于学术论文投稿中的 Cover Letter

热门文章

  1. ISO14067产品碳足迹认证流程是怎么样的?
  2. 黑名单挂断电话及删除电话记录
  3. 长文干货丨一文搞懂IoC的依赖注入
  4. YTU 《过瘾的打折季》
  5. 物联网毕业设计题目选题大全
  6. 成都计算机系统维护专业中专,成都计算机应用专业中专招生简章
  7. 小白对于linux的命令的一些基础认识
  8. 帮你总结疑问句中使用が的所有场景
  9. 【0基础强力推荐】R语言快速入门
  10. ajax append进来的图片闪一下就不见了,ajax上传图片问题