1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Drawing.Imaging;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9.  
  10. namespace 落地页测试代码
  11. {
  12. public class VerifyCode
  13. {
  14. public byte[] GetVerifyCode()
  15. {
  16. int codeW = ;
  17. int codeH = ;
  18. int fontSize = ;
  19. string chkCode = string.Empty;
  20. //颜色列表,用于验证码、噪线、噪点
  21. Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
  22. //字体列表,用于验证码
  23. string[] font = { "Times New Roman" };
  24. //验证码的字符集,去掉了一些容易混淆的字符
  25. char[] character = { '', '', '', '', '', '', '', '', '', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
  26. Random rnd = new Random();
  27. //生成验证码字符串
  28. for (int i = ; i < ; i++)
  29. {
  30. chkCode += character[rnd.Next(character.Length)];
  31. }
  32. //写入Session、验证码MD5加密
  33. WebHelper.WriteSession("nfine_session_verifycode", Md5.md5(chkCode.ToLower(), ));
  34. //创建画布
  35. Bitmap bmp = new Bitmap(codeW, codeH);
  36. Graphics g = Graphics.FromImage(bmp);
  37. g.Clear(Color.White);
  38. //画噪线
  39. for (int i = ; i < ; i++)
  40. {
  41. int x1 = rnd.Next(codeW);
  42. int y1 = rnd.Next(codeH);
  43. int x2 = rnd.Next(codeW);
  44. int y2 = rnd.Next(codeH);
  45. Color clr = color[rnd.Next(color.Length)];
  46. g.DrawLine(new Pen(clr), x1, y1, x2, y2);
  47. }
  48. //画验证码字符串
  49. for (int i = ; i < chkCode.Length; i++)
  50. {
  51. string fnt = font[rnd.Next(font.Length)];
  52. Font ft = new Font(fnt, fontSize);
  53. Color clr = color[rnd.Next(color.Length)];
  54. g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * , (float));
  55. }
  56. //将验证码图片写入内存流,并将其以 "image/Png" 格式输出
  57. MemoryStream ms = new MemoryStream();
  58. try
  59. {
  60. bmp.Save(ms, ImageFormat.Png);
  61. return ms.ToArray();
  62. }
  63. catch (Exception)
  64. {
  65. return null;
  66. }
  67. finally
  68. {
  69. g.Dispose();
  70. bmp.Dispose();
  71. }
  72. }
  73. }
  74. }

C# 登陆验证码工具类VerifyCode的更多相关文章

  1. 【转载】Asp.Net生成图片验证码工具类

    在Asp.Net应用程序中,很多时候登陆页面以及其他安全重要操作的页面需要输入验证码,本文提供一个生成验证码图片的工具类,该工具类通过随机数生成验证码文本后,再通过C#中的图片处理类位图类,字体类,一 ...

  2. Java 验证码工具类

    package com.wuyu.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ...

  3. JAVA短信验证码 工具类

    MsgCodeUtil.java package com.hg.util; import com.soyea.enums.ResultEnum; import com.soyea.exception. ...

  4. Vcode的生成工具类,生成制定长度验证码,图文验证码工具类

    public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...

  5. java生成图片验证码(转)--封装生成图片验证码的工具类

    博客部分内容转载自 LonlySnow的博客:后台java 实现验证码生成 1.controller方法 @RequestMapping(value = "/verifycode/img&q ...

  6. Java 图片验证码工具

    package com.microwisdom.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics ...

  7. Hutool中那些常用的工具类和方法

    Hutool中那些常用的工具类和方法 Hutool是一个Java工具包,它帮助我们简化每一行代码,避免重复造轮子.如果你有需要用到某些工具方法的时候,不妨在Hutool里面找找,可能就有.本文将对Hu ...

  8. ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)

    验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...

  9. java 工具类 验证码

    第一步: 引入工具类 工具类一: import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import jav ...

随机推荐

  1. K3CLOUDJOBPROCESS每分钟重启

    1.进入服务,找到k3cloudjobprocess 2.设置每分钟重启

  2. SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建

    处理前的查询结果如上图: 通过借助SQL变量的定义 ) DECLARE @Num int SET @Scope='' ), ' ' GROUP BY ContractID 实现了一下效果: //创建拼 ...

  3. 在centos安装MySql的三种安装方法

    一.二进制安装MySql 1. 下载Mysql安装包 wget https://downloads.mysql.com/archives/get/file/mysql-5.6.40-linux-gli ...

  4. x86/x64/x86_64/i386/ia32/ia64/amd/amd64 辨析

    x64 = x86_64 = amd64 64位指令集,是对IA-32的扩展,由AMD提出,implemented by AMD,Intel.可兼容32位指令集(IA-32) 目前大部分64位计算机均 ...

  5. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  6. Django 对接 支付宝支付, 回调

    平台 点击这里进入 蚂蚁金服开放平台 沙箱 点击这里进入 沙箱环境 初始界面 设置公钥 下载创建秘钥工具 1.  进入文档中心 这里 2. 选中 电脑网站支付 3. 进入后选中 API 列表 中的 统 ...

  7. 题解 P4783 【【模板】矩阵求逆】

    题目大意 求一个N×N的矩阵的逆矩阵.答案对10^9+7取模.N<=400 前置知识 矩阵的初等变换 矩阵的逆定义为 A*B=E(E为单位矩阵)此时B为A的逆 思路 如果矩阵有逆 那么这个矩阵经 ...

  8. Day062--django--模板,母版和继承

    1.MVC和MTV MVC C Controller : 逻辑的控制 M Model : 存取数据 V View : 信息的展示 MTV M : model ORM操作 T: Template 模板 ...

  9. boto3库限速

    # -*- coding: utf-8 -*- import boto3 from boto3.s3.transfer import TransferConfig # from s3transfer. ...

  10. Gcc 命令大全

    gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项. 1.无选项编译链接 例:命令:gcc test.c //会默认生成a.out可执行程序 2.-E: 进行预处理和编译,生成汇编 ...