vcodeimagepage.cs
来自「C#编写的在线用户统计、在线编辑器、验证码图片」· CS 代码 · 共 182 行
CS
182 行
/*
* VCodeImagePage.cs @Microsoft Visual Studio 2008 <.NET Framework 2.0 (or Higher)>
* AfritXia
* 2008/5/22
*
* Copyright(c) http://www.AfritXia.NET/
*
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web.UI;
namespace Net.AfritXia.Web.UI
{
/// <summary>
/// 验证码图片页面
/// </summary>
public class VCodeImagePage : Page
{
// 随机对象
private static readonly Random g_random = new Random();
/// <summary>
/// 页面加载事件函数
/// </summary>
/// <param name="e"></param>
protected override void OnPreLoad(EventArgs e)
{
base.OnPreLoad(e);
// 获取随机字符串
string vcStr = this.NextString(this.MinChars, this.MaxChars);
// 创建验证码图片生成器
VCodeImageCreator vcImgCreator = new VCodeImageCreator();
// 设置字符尺寸
vcImgCreator.CharMinSize = this.CharMinSize;
vcImgCreator.CharMaxSize = this.CharMaxSize;
// 创建验证码图片
Image vcImg = vcImgCreator.CreateImage(this.ImageWidth, this.ImageHeight, vcStr);
// 保存验证码
this.SaveValidationCode(vcStr);
// 保存验证码图片
vcImg.Save(Response.OutputStream, ImageFormat.Gif);
}
/// <summary>
/// 保存验证码
/// </summary>
/// <param name="validationCode"></param>
protected virtual void SaveValidationCode(string validationCode)
{
}
/// <summary>
/// 获取图片宽度
/// </summary>
public virtual int ImageWidth
{
get
{
if (Request.QueryString["ImgWidth"] == null)
return 180;
return Convert.ToInt32(Request.QueryString["ImgWidth"]);
}
}
/// <summary>
/// 获取图片高度
/// </summary>
public virtual int ImageHeight
{
get
{
if (Request.QueryString["ImgHeight"] == null)
return 60;
return Convert.ToInt32(Request.QueryString["ImgHeight"]);
}
}
/// <summary>
/// 获取最少字符个数
/// </summary>
public virtual int MinChars
{
get
{
if (Request.QueryString["MinChars"] == null)
return 5;
return Convert.ToInt32(Request.QueryString["MinChars"]);
}
}
/// <summary>
/// 获取最多字符个数
/// </summary>
public virtual int MaxChars
{
get
{
if (Request.QueryString["MaxChars"] == null)
return 7;
return Convert.ToInt32(Request.QueryString["MaxChars"]);
}
}
/// <summary>
/// 获取最小字符尺寸
/// </summary>
public virtual int CharMinSize
{
get
{
if (Request.QueryString["CharMinSize"] == null)
return 18;
return Convert.ToInt32(Request.QueryString["CharMinSize"]);
}
}
/// <summary>
/// 获取最大字符尺寸
/// </summary>
public virtual int CharMaxSize
{
get
{
if (Request.QueryString["CharMaxSize"] == null)
return 32;
return Convert.ToInt32(Request.QueryString["CharMaxSize"]);
}
}
/// <summary>
/// 随机生成字符串
/// </summary>
/// <param name="minChars"></param>
/// <param name="maxChars"></param>
/// <returns></returns>
public string NextString(int minChars, int maxChars)
{
string value = "";
// 随机产生字符串长度
int strLen = g_random.Next(minChars, maxChars);
// 计数器
int count = 0;
while (count < strLen)
{
// 产生随机字符 0..9, a..z, A..Z
int n = g_random.Next(48, 121);
// 如果不是数字或者字母, 则跳过
if ((n >= 58 && n <= 64) || (n >= 91 && n <= 96))
continue;
// 不为 I, o, O
if (n == '0' || n == '1' ||
n == 'o' || n == 'O' || n == 'r')
continue;
value += Convert.ToChar(n);
count++;
}
return value;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?