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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值