zoukankan      html  css  js  c++  java
  • asp.net如何生成图片验证码

    新建一个页面image.aspx,添加命名空间:

    using System.Drawing.Imaging;
    using System.IO;

      然后在Page_load事件拷入如下代码:

       //生成4位的验证码
       string tmp = RndNum(4);
       HttpCookie a 
    = new HttpCookie("ImageV",tmp);   
       Response.Cookies.Add(a);
       
    this.ValidateCode(tmp);

      接下来向该页面添加两个方法:

    private void ValidateCode(string VNum) 
      
    {
       Bitmap Img
    =null;
       Graphics g
    =null;
       MemoryStream ms
    =null;

       
    int gheight=VNum.Length*12;
       Img
    =new Bitmap(gheight,25);
       g
    =Graphics.FromImage(Img);
       
    //背景颜色
       g.Clear(Color.White);
       
    //文字字体
       Font f=new Font("Arial Black",10);
       
    //文字颜色
       SolidBrush s=new SolidBrush(Color.Black);
       g.DrawString(VNum,f,s,
    3,3);
       ms
    =new MemoryStream();
       Img.Save(ms,ImageFormat.Jpeg);
       Response.ClearContent(); 
       Response.ContentType
    ="image/Jpeg";
       Response.BinaryWrite(ms.ToArray());
       
       g.Dispose();
       Img.Dispose();
       Response.End();
      }


      
    private string RndNum(int VcodeNum)
      
    {
       
    string Vchar="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p"+
        
    ",q,r,s,t,u,v,w,x,y,z";
       
    string[] VcArray=Vchar.Split(new Char [] {','});
       
    string VNum="";
       
    int temp=-1;

       Random rand
    =new Random();
       
       
    for(int i=1;i<VcodeNum+1;i++)
       
    {
        
    if(temp!=-1)
        
    {
         rand
    =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
        }

       
        
    int t=rand.Next(35);
        
    if(temp!=-1&&temp==t)
        
    {
         
    return RndNum(VcodeNum);
        }

        temp
    =t;
        VNum
    +=VcArray[t];
       }

       
    return VNum;
      }


         如果要在页面a.aspx生成验证码,则在该页面添加一个图片控件,假设命名为:ImageButton1,然后在page_Load事件中写如下代码:

    ImageButton1.ImageUrl = "image.aspx";

        这样就可以生成验证码了,image.aspx页面可以随便放在哪里,不过要注意ImageButton1.ImageUrl 要写对,同级可以直接写image.aspx,上一级写../image.aspx,很方便吧。

  • 相关阅读:
    LuaJIT 之 FFI
    rtmp时间戳问题导致的丢帧,帧率显示错误
    c# 调用 c++的 dll 中关于 char*传入传出参数
    “Microsoft”中不存在类型或命名空间名称“Office”(是否缺少程序集引用?)
    udp,select超时和recvfrom收不到数据原因
    rtmpdump应用在window中
    Win7下安装openssl
    debug模式不报错,release模式报错
    qt 断点无效
    http协议 c++ 接收
  • 原文地址:https://www.cnblogs.com/flycantus/p/526779.html
Copyright © 2011-2022 走看看