using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
namespace FriendsInfoAdministrators.Web.ASPX
{
public partial class ValidateNumbers : System.Web.UI.Page
{
/// <summary>
/// 加载时生成验证码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
string strNum = Rndnum();
Session["Num"] = strNum;//页面间传值,用于验证判断
ValidateCode(strNum);
}
/// <summary>
/// 建立一个函数Rndnum,用来生成4个随即数字
/// </summary>
/// <returns></returns>
public string Rndnum()
{
int j1;
string StrChoice = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
string[] strResult = StrChoice.Split(new Char[] { ',' });//分割字符串函数,并放于strResult数组中
string strReturn = "";
Random rnd = new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < 4; i++)
{
Random rnd1 = new Random(rnd.Next() * unchecked((int)DateTime.Now.Ticks));
j1 = rnd1.Next(35);
rnd = new Random(rnd.Next() * unchecked((int)DateTime.Now.Ticks));
strReturn = strReturn + strResult[j1].ToString();
}
return strReturn;
}
/// <summary>
/// 数字转换为位图图像
/// </summary>
/// <param name="vnum"></param>
public void ValidateCode(string vnum)
{
MemoryStream ms = new MemoryStream();//内存中分配空间
double Height = (vnum.Length) * 15;
int gHeight = Convert.ToInt32(Height);
Bitmap img = new Bitmap(gHeight, 25);//定义位图,使用了两个参数
Graphics g = Graphics.FromImage(img);
g.DrawString(vnum, (new Font("幼圆", 13)), (new SolidBrush(Color.Blue)), 1, 4);//将文本vnum,转换为图片,在指定的位置(X,Y),执行字体和刷子
//SolidBrush(Color.Blue)用蓝色
img.Save(ms, ImageFormat.Png);//以PNG格式保存
Response.ClearContent();
Response.ContentType = "image/Bmp";//浏览器显示图片,否则浏览器将下载提示保存该图
Response.BinaryWrite(ms.ToArray());//输出图片
//以下函数及时删除对象,释放资源
g.Dispose();
img.Dispose();
Response.End();
}
}
}
浙公网安备 33010602011771号