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

来源:互联网 发布:收获日2真人网络剧 编辑:程序博客网 时间:2024/06/05 05:54

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();
  }

调用页面只将图片源指向为该页面即可

原创粉丝点击