• 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,很方便吧。

  • 相关阅读:
    hdu 1427 速算24点 dfs暴力搜索
    hihocoder 九十八周 搜索一 24点
    codeforces 352 div 2 C.Recycling Bottles 贪心
    华中农业大学预赛 B Handing Out Candies 余数的和
    neu 1694 Primorial vs LCM 数论
    Codeforces Round #281 (Div. 2) A. Vasya and Football 暴力
    HDU 5538/ 2015长春区域 L.House Building 水题
    HDU 5536/ 2015长春区域 J.Chip Factory Trie
    HDU 5534/ 2015长春区域H.Partial Tree DP
    HDU 5533/ 2015长春区域 G.Dancing Stars on Me 暴力
  • 原文地址:https://www.cnblogs.com/flycantus/p/526779.html
Copyright © 2020-2023  润新知