ASP随机四位数字验证码
2014-07-18 19:45
274 查看
首先需要一个验证码类,放在App_Code
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing ;
/// <summary>
///CheckCodeImage 的摘要说明
/// </summary>
public class CheckCodeImage
{
/// <summary>
/// 生成随机验证码,四位数
/// </summary>
private HttpResponse Response;
public CheckCodeImage(HttpResponse response)
{
this.Response = response;
}
public string GetCheckCode()
{
int num;
char code;
string checkCode = string.Empty;
System.Random random = new Random();
for (int i = 0; i < 4; i++)
{
num = random.Next();
code = (char)('0' + (char)(num % 10));
checkCode += code.ToString();
}
return checkCode;
}
public void CreatCheckCodeImage(string checkCode)
{
//不允许验证码为空
if(checkCode==null ||checkCode.Trim ()==string .Empty )
{return ;}
System .Drawing .Bitmap image=new Bitmap ((int)Math .Ceiling ((checkCode .Length *12.5)),22);//验证码图片的高度和宽度
Graphics g=Graphics .FromImage (image );
Random random=new Random ();
//清空图片背景色
g.Clear (Color.White );
for (int i=0;i<44;i++)
{
int x1=random .Next (image .Width -i);
int x2=random .Next (image .Width );
int y1=random .Next (image.Height );
int y2=random .Next (image .Height );
g.DrawLine (new Pen (Color .Silver ),x1 ,y1 ,x2 ,y2);
}
Font font=new Font("Arial",12,(System.Drawing.FontStyle .Bold |System .Drawing .FontStyle .Italic ));
System .Drawing .Drawing2D .LinearGradientBrush brush=new System .Drawing .Drawing2D .LinearGradientBrush(new Rectangle (0,0,image .Width ,image .Height),Color .Blue ,Color .DarkRed ,1.2f,true );
g.DrawString (checkCode ,font ,brush ,2,2);
//画前景噪音点
for (int i = 0; i < 36; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
}
新建一个页面(default.aspx),后台代码如下
protected void Page_Load(object sender, EventArgs e)
{
CheckCodeImage image = new CheckCodeImage(this.Response);
string strCheckCode = image.GetCheckCode();
Session.Add("checkcode", strCheckCode);
image.CreatCheckCodeImage(strCheckCode);
}
最后,在需要用验证码的界面,添加一个image控件,设置控件url为default.aspx.
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing ;
/// <summary>
///CheckCodeImage 的摘要说明
/// </summary>
public class CheckCodeImage
{
/// <summary>
/// 生成随机验证码,四位数
/// </summary>
private HttpResponse Response;
public CheckCodeImage(HttpResponse response)
{
this.Response = response;
}
public string GetCheckCode()
{
int num;
char code;
string checkCode = string.Empty;
System.Random random = new Random();
for (int i = 0; i < 4; i++)
{
num = random.Next();
code = (char)('0' + (char)(num % 10));
checkCode += code.ToString();
}
return checkCode;
}
public void CreatCheckCodeImage(string checkCode)
{
//不允许验证码为空
if(checkCode==null ||checkCode.Trim ()==string .Empty )
{return ;}
System .Drawing .Bitmap image=new Bitmap ((int)Math .Ceiling ((checkCode .Length *12.5)),22);//验证码图片的高度和宽度
Graphics g=Graphics .FromImage (image );
Random random=new Random ();
//清空图片背景色
g.Clear (Color.White );
for (int i=0;i<44;i++)
{
int x1=random .Next (image .Width -i);
int x2=random .Next (image .Width );
int y1=random .Next (image.Height );
int y2=random .Next (image .Height );
g.DrawLine (new Pen (Color .Silver ),x1 ,y1 ,x2 ,y2);
}
Font font=new Font("Arial",12,(System.Drawing.FontStyle .Bold |System .Drawing .FontStyle .Italic ));
System .Drawing .Drawing2D .LinearGradientBrush brush=new System .Drawing .Drawing2D .LinearGradientBrush(new Rectangle (0,0,image .Width ,image .Height),Color .Blue ,Color .DarkRed ,1.2f,true );
g.DrawString (checkCode ,font ,brush ,2,2);
//画前景噪音点
for (int i = 0; i < 36; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
}
新建一个页面(default.aspx),后台代码如下
protected void Page_Load(object sender, EventArgs e)
{
CheckCodeImage image = new CheckCodeImage(this.Response);
string strCheckCode = image.GetCheckCode();
Session.Add("checkcode", strCheckCode);
image.CreatCheckCodeImage(strCheckCode);
}
最后,在需要用验证码的界面,添加一个image控件,设置控件url为default.aspx.
相关文章推荐
- ASP英文字母加数字随机验证码(4位)
- 怎样生成带有随机杂点的ASP数字以及字母验证码
- ASP数字、字母验证码(带随机杂点)
- ASP英文字母加数字随机验证码(4位)
- ASP中一个很不错的四位数字验证码生成代码 - [ASP程序]
- ASP数字、字母验证码(带随机杂点)
- 现在需要100个随机验证码。每个验证码要求是: 每个验证码是四位 ,验证码可以是数字和字母
- js算法--显示新闻、随机四位验证码、随机点名、插入数字再按从小到大排列
- ASP英文字母加数字随机验证码(4位)
- 怎样生成带有随机杂点的ASP数字以及字母验证码
- ASP中一个很不错的四位数字验证码生成代码 - [ASP程序]
- 在ASP.NET下实现数字和字符相混合的验证码
- 数字验证码.asp
- 利用JSP在Web页面中显示随机数字验证码图片
- 在ASP.NET下实现数字和字符相混合的验证码
- 在ASP.NET下实现数字和字符相混合的验证码
- ASP 无重复数字随机函数, 数组实现, 并应用于随机显示记录集 By shawl.qiu
- 在ASP.NET下实现数字和字符相混合的验证码
- 用ASP生成XBM数字图片(可用来生成验证码)
- 在ASP.NET下实现数字和字符相混合的验证码