验证码一般有服务器端生成,本次生成验证码只是为了学习canvas的用法

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><!--<script src="JS/jquery-3.3.1.js"></script>--><script type="text/javascript">//获取随机颜色方法function GetColor() {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 + ")"}//页面加载事件
        window.onload = function () {YZM();};//绘制验证码方法function YZM() {var canvas = document.getElementById("canvas");//获取到canvas的DOM元素var context = canvas.getContext("2d");//定义canvas的绘制环境
            canvas.width = 120;//设置canvas的宽度
            canvas.height = 40;//设置canvas的高度
            context.strokeRect(0, 0, 120, 40);//绘制一个矩形框var aCode = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'F', 'I ', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];for (var i = 0; i < 4; i++) {var x = 20 + i * 20;//定义每个字符的间距var y = 20 + Math.random() * 10;//定义字符上下浮动var index = Math.floor(Math.random() * aCode.length);//向下取整数 获得aCode里面的随机索引var txt = aCode[index];//取出txt
                context.font = "bold 25px 微软雅黑";//设置字体
                context.fillStyle = GetColor();//获取随机颜色//文字旋转
                context.translate(x, y);//画布平移至坐标x,yvar deg = 40 * Math.random()*(Math.random > 0.5 ? 1 : -1) * Math.PI / 180;//获取一个随机弧度值
                context.rotate(deg);//将画布旋转
                context.fillText(txt, 0, 0);//在坐标点绘制文字
                context.rotate(-deg);//将画布还原
                context.translate(-x, -y);//将画布还原
            }//绘制8条随机线for (var i = 0; i < 8; i++) {context.beginPath();//开始一个路径
                context.moveTo(Math.random() * 120, Math.random() * 40);//设置开始点
                context.lineTo(Math.random() * 120, Math.random() * 40);//设置结束点
                context.strokeStyle = GetColor();//随机颜色
                context.stroke();//开始绘制
            }for (var i = 0; i < 10; i++) {context.beginPath();//开始一个路径var x = Math.random() * 120;//定义点的x坐标var y = Math.random() * 40;//定义点的y坐标
                context.moveTo(x, y);//开始点移动至坐标点
                context.fillStyle = GetColor();//获取随机颜色
                context.fillText("·", x, y);//开始绘制
            }};</script>
</head>
<body><canvas id="canvas">您的浏览器不支持 HTML5 canvas 标签。</canvas><a  href="#" onclick="YZM()">再试一次</a>
</body>
</html>

转载于:https://www.cnblogs.com/ChengMeng/p/9337155.html

canvas(学习)绘制验证码相关推荐

  1. canvas学习绘制渐变色

    1.createLinearGradient() 创建线性渐变 //Linear adj. 直线的 线性的 //Gradient n. 梯度 变化率 createLinearGradient(x1,y ...

  2. canvas学习绘制扇形

    1.自己用canvas绘制的一个丑丑的扇形(两个圆弧+一个梯形) <!DOCTYPE html> <html lang="en"> <head> ...

  3. [HTML5 Canvas学习]绘制矩形

    1.使用strokeRect和fillRect方法绘制矩形 a.strokeRect是绘制一个不填充的矩形 b.fillRect是绘制一个填充的矩形 代码: <script>var can ...

  4. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方法, ...

  5. Canvas学习:绘制圆和圆弧

    圆和圆弧是图形中基本图形之一,今天我们来了解在Canvas中怎么绘制圆和圆弧.在Canvas中绘制圆和圆弧其实和绘制线段和矩形一样的简单.在Canvas中,CanvasRenderingContext ...

  6. HTML5 学习手笔二:canvas API 绘制树形图案A

    上篇通过对canvas 画对角线,了解了一些canvas画图基本原理.现在可以利用HTML5 canvas API创建一个场景:带有长跑跑道的树林. 本篇大纲 用canvas API绘制树木的树冠 为 ...

  7. canvas学习总结四:绘制虚线

    上一章节我们说到,线性路径的绘制,主要利用movoTo(),lineTo()等方法,当然 Canvas 2D API 也提供了虚线的绘制方法,CanvasRenderingContext2D.setL ...

  8. canvas学习和滤镜实现

    最近学习了 HTML5 中的重头戏-- canvas .利用 canvas,前端人员可以很轻松地.进行图像处理.其 API 繁多,这次主要学习常用的 API,并且完成以下两个代码: 实现去色滤镜 实现 ...

  9. html5canvas绘制图片源码,HTML5 CANVAS:绘制图片

    HTML5 CANVAS:绘制图片 通过前面的学习,我们现在已经可以在HTML5 canvas中绘制图形和文字,并给它们设置一些样式.我们还可以在中绘制图片.用于在作为绘制源的图片可以是下面的几种元素 ...

最新文章

  1. TimeQuest之delay_fall clock_fall傻傻分不清楚
  2. datax源码阅读二:Engine流程
  3. DAY12 生成器初始与列表生成式
  4. 框架源码专题:Mybatis的一级缓存、二级缓存是什么?有什么作用?
  5. ironpython停止更新_IronPython死而复生
  6. MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
  7. drain open 线与_再转一个:push-pull and open-drain,开漏(open drain)和开集(open collector...
  8. Python之 类属性和类方法
  9. php 数独求解,高效算法求解数独(示例代码)
  10. IT战略规划,我们在做什么?(上)
  11. Why NOT Use My Index
  12. 如何用html制作田字格,WPS文字怎么制作田字格 WPS文字制作田字格的方法
  13. echarts动态循环出多个相同图表但不同数据动态渲染图表
  14. 锁相环(PLL)基本结构及相关基本知识
  15. XSS Game通关教程
  16. 北上深广领军,成都名列第五,武汉跌出前十,中国城市综合发展指标最新排名公布...
  17. SAP 登录后默认T-CODE
  18. c语言 用结构指针输入,c语言结构体以及结构体指针的使用
  19. kettle下载百度网盘地址含入门教程4(利用时间戳抽取增量数据)
  20. 达梦数据库的归档配置

热门文章

  1. matlab gist,图像GIST特征和LMGIST包的python实现(有github)
  2. Oracle DG备库出现GAP解决
  3. *nux平台上的C10M问题
  4. 关于链表,看这一篇就够了!(新手入门)
  5. 这是一篇绝无任何套路的产品规划方法论
  6. C++项目实战-高并发服务器详析
  7. 小学学校计算机房使用制度,小学机房安全管理制度
  8. 花落长春 宜尚、城市便捷双店开业 为东北旅游服务业注入全新理念
  9. matlab gamma拉伸,基于matlab的gamma校正
  10. zookeeper 选取主 leader