ASP.NET简单验证码
今天写了一个特别简单的验证码实现。现将代码贴出。
PRotectedvoidPage_Load(objectsender, EventArgs e)
{
CreateCheckCodeImage(RndNum());
}privatestringRndNum()
{intnumber;charcode;stringcheckCode =String.Empty;
System.Random random=newRandom();for(inti =0; i <4; i++)
{
number=random.Next();if(number %2==0)
code= (char)('0'+ (char)(number %10));elsecode= (char)('A'+ (char)(number %26));
checkCode+=code.ToString();
}
Response.Cookies.Add(newHttpCookie("yzmcode", checkCode));returncheckCode;
}privatevoidCreateCheckCodeImage(stringcheckCode)
{if(checkCode ==null|| checkCode.Trim() ==String.Empty)return;
System.Drawing.Bitmap image=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length *12.5)),22);
Graphics g=Graphics.FromImage(image);try{//生成随机生成器Random random =newRandom();//清空图片背景色g.Clear(Color.White);//画图片的背景噪音线for(inti =0; i <25; i++)
{intx1 =random.Next(image.Width);intx2 =random.Next(image.Width);inty1 =random.Next(image.Height);inty2 =random.Next(image.Height);
g.DrawLine(newPen(Color.Silver), x1, y1, x2, y2);
}
Font font=newSystem.Drawing.Font("Arial",12, (System.Drawing.FontStyle.Bold |System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0, image.Width, image.Height), Color.Blue, Color.DarkRed,1.2f,true);
g.DrawString(checkCode, font, brush,2,2);//画图片的前景噪音点for(inti =0; i <100; i++)
{intx =random.Next(image.Width);inty =random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}//画图片的边框线g.DrawRectangle(newPen(Color.Silver),0,0, image.Width -1, image.Height -1);
System.IO.MemoryStream ms=newSystem.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType="image/Gif";
Response.BinaryWrite(ms.ToArray());
}finally{
g.Dispose();
image.Dispose();
}
}
引用页面代码如下:
<img id="imgCode"width="83"height="38"src="ValiDateImage.aspx?<%=DateTime.Now %>"style="cursor: pointer;"alt="点击刷新"onclick="Show(this);">