热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

后台生产验证码code和byte[]图片

后台生产验证码code和byte[]图片引用命名空间usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Dr

后台生产验证码code和byte[]图片

引用命名空间

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;

 

 

生成方法

///

生成验证码
///

///
public string GetCheckCode()
{
int number;
char code;
string checkCode = String.Empty;

System.Random random = new Random();
do
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
if (code == 'o' || code == 'O') continue;
checkCode += code.ToString();
} while (checkCode.Length <4);
//code储存.在session
KMHC.Infrastructure.SessionHelper.SetSession("checkCode", checkCode.ToUpper());

byte[] bytes &#61; CreateValidateGraphic(checkCode.ToLower());
var response &#61; new BaseResponse();
var src &#61; "data:image/jpeg;base64," &#43; Convert.ToBase64String(bytes);//Base64转换 HTML标签img 直接显示
return src;
}


///


/// 创建验证码的图片
///

///
///
public static byte[] CreateValidateGraphic(string checkCode)
{
Bitmap image &#61; new Bitmap((int)Math.Ceiling(checkCode.Length * 13.5), 22);
Graphics g &#61; Graphics.FromImage(image);
try
{
//生成随机生成器 
Random random &#61; new Random();
//清空图片背景色 
g.Clear(Color.White);
//画图片的干扰线 
for (int i &#61; 0; i <25; i&#43;&#43;)
{
int x1 &#61; random.Next(image.Width); int x2 &#61; random.Next(image.Width);
int y1 &#61; random.Next(image.Height);
int y2 &#61; random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font &#61; new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
LinearGradientBrush brush &#61; new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 3, 2);
//画图片的前景干扰点 
for (int i &#61; 0; i <100; i&#43;&#43;)
{
int x &#61; random.Next(image.Width); int y &#61; random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线 
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
//保存图片数据 
MemoryStream stream &#61; new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
//输出图片

return stream.ToArray();
}
finally
{
g.Dispose();
image.Dispose();
}
}




推荐阅读
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
  • CentOS 6.8 上安装 Oracle 10.2.0.1 的常见问题及解决方案
    本文记录了在 CentOS 6.8 系统上安装 Oracle 10.2.0.1 数据库时遇到的问题及解决方法,包括依赖库缺失、操作系统版本不兼容、用户权限不足等问题。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 本文详细探讨了在微服务架构中,使用Feign进行远程调用时出现的请求头丢失问题,并提供了具体的解决方案。重点讨论了单线程和异步调用两种场景下的处理方法。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文介绍如何使用JPA Criteria API创建带有多个可选参数的动态查询方法。当某些参数为空时,这些参数不会影响最终查询结果。 ... [详细]
  • 解决FCKeditor应用主题后上传问题及优化配置
    本文介绍了在Freetextbox收费后选择FCKeditor作为替代方案时遇到的上传问题及其解决方案。通过调整配置文件和调试工具,最终解决了上传失败的问题,并对相关配置进行了优化。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
author-avatar
紫百合1990_950
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有