asp.net 生成图片验证码

asp.net 生成图片验证码identifyingcode.aspx里没有内容略。

identifyingcode.cs文件:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

public partial class identifyingcode : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

string tmp = RndNum(4);

HttpCookie a = new HttpCookie("ImageV", tmp);

Response.Cookies.Add(a);

this.ValidateCode(tmp);

­

}

private void ValidateCode(string VNum)

{

Bitmap Img = null;

Graphics g = null;

MemoryStream ms = null;

­

int gheight = VNum.Length * 12;

Img = new Bitmap(gheight, 25);

g = Graphics.FromImage(Img);

//背景颜色

g.Clear(Color.LightSteelBlue);

//文字字体

Font f = new Font("Arial Black", 10);

//文字颜色

SolidBrush s = new SolidBrush(Color.RoyalBlue);

g.DrawString(VNum, f, s, 3, 3);

ms = new MemoryStream();

Img.Save(ms, ImageFormat.Jpeg);

Response.ClearContent();

Response.ContentType = "images/Jpeg";

Response.BinaryWrite(ms.ToArray());

g.Dispose();

Img.Dispose();

Response.End();

}

­

private string RndNum(int VcodeNum)

{

string Vchar = "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[] VcArray = Vchar.Split(new Char[] { ',' });

string VNum = "";

int temp = -1;

­

Random rand = new Random();

­

for (int i = 1; i < VcodeNum + 1; i++)

{

if (temp != -1)

{

rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));

}

­

int t = rand.Next(35);

if (temp != -1 && temp == t)

{

return RndNum(VcodeNum);

}

temp = t;

VNum += VcArray[t];

}

return VNum;

}

­

}

­

使用方法:

在需要它的页面html里添加

<img src="identifyingcode.aspx" />

­

­

HttpCookieCollection cookies = Request.Cookies;

string tmp = cookies["ImageV"].Value;

然后比tmp与获取的较验证码文本框中的值是否相同