前几天有朋友问我怎么生成图片验证码,话不多说直接上代码。

支持.NET CORE开源。助力.NET Core社区发展。

  1. using System;
  2. using System.IO;
  3. using System.DrawingCore.Imaging;
  4. using System.DrawingCore;
  5. using CZFW.Framework.Model;
  6.  
  7. namespace CZFW.Core.Security
  8. {
  9. /// <summary>
  10. /// 图形验证码
  11. /// </summary>
  12. public class VerifyCode
  13. {
  14. public byte[] GetVerifyCode()
  15. {
  16. const int codeW = ;
  17. const int codeH = ;
  18. const 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、验证码加密
  33. WebHelper.WriteSession("czfw_session_verifycode", DesEncrypt.Encrypt(chkCode.ToLower(), "MD5"));
  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 * , );
  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. }

上面的是生成图片下面是在控制器中使用

  1. public ActionResult GetAuthCode()
  2. {
  3. return File(new VerifyCode().GetVerifyCode(), @"image/Gif");
  4. }

用File返回到web页面上就是一个验证码图片了。

Asp.Net Core 生成图形验证码的更多相关文章

  1. Net Core 生成图形验证码

    1. NetCore ZKweb       在我第一次绘制图形验证码时是采用的ZKweb的绘制库,奉上代码参考      public byte[] GetVerifyCode(out string ...

  2. C#生成图形验证码

    先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...

  3. PHP5 GD库生成图形验证码(汉字)

    PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...

  4. PHP5生成图形验证码(有汉字)

    利用PHP5中GD库生成图形验证码 类似于下面这样 1.利用GD库函数生成图片,并在图片上写指定字符 imagecreatetruecolor   新建一个真彩色图像      imagecolora ...

  5. ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码

    写在前面 友情提示: Google reCAPTCHA(v3下同) 的使用不需要"梯子",但申请账号的时候需要! Google reCAPTCHA 的使用不需要"梯子&q ...

  6. asp.net core 腾讯验证码的接入

    asp.net core 腾讯验证码的接入 Intro 之前使用的验证码服务是用的极验验证,而且是比较旧的,好久之前接入的,而且验证码服务依赖 Session,有点不太灵活,后来发现腾讯也有验证码服务 ...

  7. java生成图形验证码

    效果图 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buf ...

  8. ASP.NET中如何生成图形验证码

    通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3 ...

  9. ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)

    关心最多的问题,不FQ能不能用,答案是能.Google官方提供额外的域名来提供服务,国内可以正常使用. 一. 前言 验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码.刷票.论坛灌水.刷注册等 ...

随机推荐

  1. sketchup 与 ArcGIS 10 的交互(转)

    来自:http://blog.csdn.net/kikitamoon/article/details/9036347 许多用户在 ArcGIS 9.2 时代习惯于使用 Sketchup 插件,但是,9 ...

  2. Java NIO(四) Scatter/Gather

    Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(sc ...

  3. jquery mobile 自定义图标

    Jquery Mobile框架包含了一组最常用的移动应用程序所需的图标,为了减少下载的大小,Jquery Mobile包含的是的白色的图标sprite图片,并自动在图标后添加一个半透明的黑圈以确保在任 ...

  4. postman接口案例

    接口测试 什么是接口(API) API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以.一个API就是一个Interface.我们 ...

  5. 基于配置的Spring AOP

    前面几篇学习了Spring的依赖注入,这篇开始学习另一个核心功能——面向切面编程AOP. 通过本文,你可以了解到: 1 Spring xml规范 2 通过配置文件实现面向切面编程 3 对比与传统AOP ...

  6. JSP-Servlet中文乱码

    客户端 get 方法时 出现乱码: 解决办法: String str1 = request.getParameter("stuname"); String str = new St ...

  7. nodejs protobuff node-protobuf c++ windows扩展安装笔记

    https://www.npmjs.com/package/node-protobuf 按照作者所说的办法在windows平台安装的办法,先到google的github下载2.6.1版本的protob ...

  8. ART_20190430

    Algorithm-算法题 第一个只出现一次的字符 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要 ...

  9. intelli j中如何重启tomcat,或者关掉tomcat?每次点run都提示jmx端口占用

    方法1.idea有时候会这样,我一般都是直接打开任务管理器,把java进程给杀掉就好了.

  10. 基于Qt搭建ROS开发环境

    参考的博客: http://blog.csdn.net/u013453604/article/details/52186375 http://blog.csdn.net/dxuehui/article ...