您的位置:首页 > 其它

如何生成验证码图片,并且不刷新页面就可换图片

2008-09-04 15:17 447 查看
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Response.BufferOutput = true; //缓冲输出
Response.Cache.SetExpires(DateTime.Now.AddMilliseconds(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.AppendHeader("Pragma", "No-Cache");
string key=CreateValidateKey(5);//生成验证码,参数为验证码长度
Session["ValiDateKey"]=key;//验证码保存到Session,以便调用页面效验
CreateValidateImage(key);//生成并输出验证码图像
}

private string CreateValidateKey(int keyLength)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder();
string key="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZz";

char[] keyBase=key.ToCharArray();

Random rnd=new Random();

for(int i=0;i<keyLength;i++)
{
sb.Append(keyBase[rnd.Next(0,keyBase.Length)]);
}

return sb.ToString();
}

private void CreateValidateImage(string key)
{
Bitmap validateImg=new Bitmap(key.Length*14,24,PixelFormat.Format24bppRgb);//宽60,高30,24位RGB颜色
Graphics g=Graphics.FromImage(validateImg);//绘图对象
Font f=new Font("Arial",12,FontStyle.Bold);
g.Clear(Color.DarkSalmon);//填充背景色

g.DrawString(key,f,Brushes.White,new PointF(0,2));//将字写到画板
//可在此再添加干扰线条的代码
g.Save();

MemoryStream m=new MemoryStream();
validateImg.Save(m,ImageFormat.Gif);//输出内存流

Response.ClearContent();//清除所有内容
Response.ContentType="image/bmp";//输出类型位图像
Response.BinaryWrite(m.ToArray());
Response.End();
}

调用页面只将图片源指向为该页面即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: