C# ASP.NET 验证码
时间: 2023-10-19 14:20:11 浏览: 43
在 C# ASP.NET 中生成验证码,可以使用 System.Drawing 命名空间中的 Graphics 类来创建图片,并使用 Random 类来生成随机验证码字符串。以下是一个简单的示例代码:
```csharp
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
public partial class CaptchaImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 设置验证码的长度
int length = 6;
// 创建一个随机数生成器,并生成随机字符串
Random random = new Random();
string captcha = "";
for (int i = 0; i < length; i++)
{
captcha += Convert.ToChar(random.Next(65, 90));
}
// 将验证码字符串保存到 Session 中
Session["Captcha"] = captcha;
// 创建一个图片对象,并设置宽度和高度
Bitmap bitmap = new Bitmap(length * 20, 50);
// 创建一个 Graphics 对象,用于绘制图片
Graphics graphics = Graphics.FromImage(bitmap);
// 设置绘制文本的字体和颜色
Font font = new Font("Arial", 24);
Brush brush = new SolidBrush(Color.Black);
// 绘制文本
graphics.DrawString(captcha, font, brush, 0, 0);
// 添加噪点
for (int i = 0; i < 100; i++)
{
int x = random.Next(bitmap.Width);
int y = random.Next(bitmap.Height);
bitmap.SetPixel(x, y, Color.FromArgb(random.Next(256), random.Next(256), random.Next(256)));
}
// 添加干扰线
for (int i = 0; i < 10; i++)
{
int x1 = random.Next(bitmap.Width);
int y1 = random.Next(bitmap.Height);
int x2 = random.Next(bitmap.Width);
int y2 = random.Next(bitmap.Height);
graphics.DrawLine(new Pen(Color.FromArgb(random.Next(256), random.Next(256), random.Next(256))), x1, y1, x2, y2);
}
// 将图片保存到输出流中
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Jpeg);
Response.Clear();
Response.ContentType = "image/jpeg";
Response.BinaryWrite(stream.ToArray());
graphics.Dispose();
bitmap.Dispose();
}
}
```
在上面的代码中,我们首先生成了一个随机验证码字符串,并将其保存到 Session 中。然后创建一个 Bitmap 对象,设置宽度和高度,并创建一个 Graphics 对象,用于绘制图片。接着设置绘制文本的字体和颜色,并使用 DrawString 方法将验证码字符串绘制到图片上。最后添加噪点和干扰线,并将图片保存到输出流中,以供页面显示。