校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 12306動態驗證碼啟發之ASP.NET實現動態GIF驗證碼(附源碼)

12306動態驗證碼啟發之ASP.NET實現動態GIF驗證碼(附源碼)

熱門標簽:南昌自動外呼系統線路 云南外呼系統代理 海東防封電銷卡 上海市三維地圖標注 寧德防封版電銷卡 辦公用地圖標注網點怎么操作 西寧電銷外呼系統公司 聊城智能電銷機器人電話 安陸市地圖標注app

12306網站推出“彩色動態驗證碼機制”,新版驗證碼不但經常出現字符疊壓,還不停抖動,不少人大呼“看不清”,稱“那個驗證碼,是畢加索的抽象畫么!”鐵總客服則表示:為了能正常購票只能這樣。而多家搶票軟件接近“報廢”,引發不少網友不滿的吐槽稱“太抽象太藝術了”。
以前做項目有時候也會用到驗證碼,但基本都是靜態的,這次也想湊湊12306的熱鬧。閑言少續,切入正題,先上代碼。

實現方法:

 public void ShowCode()
    {
      //對象實例化
      Validate GifValidate = new Validate();

      #region 對驗證碼進行設置(不進行設置時,將以默認值生成)
      //驗證碼位數,不小于4位
      GifValidate.ValidateCodeCount = 4;
      //驗證碼字體型號(默認13)
      GifValidate.ValidateCodeSize = 13;
      //驗證碼圖片高度,高度越大,字符的上下偏移量就越明顯
      GifValidate.ImageHeight = 23;
      //驗證碼字符及線條顏色(需要參考顏色類)
      GifValidate.DrawColor = System.Drawing.Color.BlueViolet;
      //驗證碼字體(需要填寫服務器安裝的字體)
      GifValidate.ValidateCodeFont = "Arial";
      //驗證碼字符是否消除鋸齒
      GifValidate.FontTextRenderingHint = false;
      //定義驗證碼中所有的字符(","分離),似乎暫時不支持中文
      GifValidate.AllChar = "1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
      #endregion

      //輸出圖像(Session名稱)
      GifValidate.OutPutValidate("GetCode");
    }

調用主要方法:

public class Validate
  {
    public string AllChar = "1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
    public Color DrawColor = Color.BlueViolet;
    public bool FontTextRenderingHint = false;
    public int ImageHeight = 0x17;
    private byte TrueValidateCodeCount = 4;
    protected string ValidateCode = "";
    public string ValidateCodeFont = "Arial";
    public float ValidateCodeSize = 13f;

    private void CreateImageBmp(out Bitmap ImageFrame)
    {
      char[] chArray = this.ValidateCode.ToCharArray(0, this.ValidateCodeCount);
      int width = (int) (((this.TrueValidateCodeCount * this.ValidateCodeSize) * 1.3) + 4.0);
      ImageFrame = new Bitmap(width, this.ImageHeight);
      Graphics graphics = Graphics.FromImage(ImageFrame);
      graphics.Clear(Color.White);
      Font font = new Font(this.ValidateCodeFont, this.ValidateCodeSize, FontStyle.Bold);
      Brush brush = new SolidBrush(this.DrawColor);
      int maxValue = (int) Math.Max((float) ((this.ImageHeight - this.ValidateCodeSize) - 3f), (float) 2f);
      Random random = new Random();
      for (int i = 0; i  this.TrueValidateCodeCount; i++)
      {
        int[] numArray = new int[] { (((int) (i * this.ValidateCodeSize)) + random.Next(1)) + 3, random.Next(maxValue) };
        Point point = new Point(numArray[0], numArray[1]);
        if (this.FontTextRenderingHint)
        {
          graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
        }
        else
        {
          graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
        }
        graphics.DrawString(chArray[i].ToString(), font, brush, (PointF) point);
      }
      graphics.Dispose();
    }

    private void CreateImageGif()
    {
      AnimatedGifEncoder encoder = new AnimatedGifEncoder();
      MemoryStream stream = new MemoryStream();
      encoder.Start();
      encoder.SetDelay(5);
      encoder.SetRepeat(0);
      for (int i = 0; i  10; i++)
      {
        Bitmap bitmap;
        this.CreateImageBmp(out bitmap);
        this.DisposeImageBmp(ref bitmap);
        bitmap.Save(stream, ImageFormat.Png);
        encoder.AddFrame(Image.FromStream(stream));
        stream = new MemoryStream();
      }
      encoder.OutPut(ref stream);
      HttpContext.Current.Response.ClearContent();
      HttpContext.Current.Response.ContentType = "image/Gif";
      HttpContext.Current.Response.BinaryWrite(stream.ToArray());
      stream.Close();
      stream.Dispose();
    }

    private void CreateValidate()
    {
      this.ValidateCode = "";
      string[] strArray = this.AllChar.Split(new char[] { ',' });
      int index = -1;
      Random random = new Random();
      for (int i = 0; i  this.ValidateCodeCount; i++)
      {
        if (index != -1)
        {
          random = new Random((i * index) * ((int) DateTime.Now.Ticks));
        }
        int num3 = random.Next(0x23);
        if (index == num3)
        {
          this.CreateValidate();
        }
        index = num3;
        this.ValidateCode = this.ValidateCode + strArray[index];
      }
      if (this.ValidateCode.Length > this.TrueValidateCodeCount)
      {
        this.ValidateCode = this.ValidateCode.Remove(this.TrueValidateCodeCount);
      }
    }

    private void DisposeImageBmp(ref Bitmap ImageFrame)
    {
      Graphics graphics = Graphics.FromImage(ImageFrame);
      Pen pen = new Pen(this.DrawColor, 1f);
      Random random = new Random();
      Point[] pointArray = new Point[2];
      for (int i = 0; i  15; i++)
      {
        pointArray[0] = new Point(random.Next(ImageFrame.Width), random.Next(ImageFrame.Height));
        pointArray[1] = new Point(random.Next(ImageFrame.Width), random.Next(ImageFrame.Height));
        graphics.DrawLine(pen, pointArray[0], pointArray[1]);
      }
      graphics.Dispose();
    }

    public void OutPutValidate(string ValidateCodeSession)
    {
      this.CreateValidate();
      this.CreateImageGif();
      HttpContext.Current.Session[ValidateCodeSession] = this.ValidateCode;
    }

    public byte ValidateCodeCount
    {
      get
      {
        return this.TrueValidateCodeCount;
      }
      set
      {
        if (value > 4)
        {
          this.TrueValidateCodeCount = value;
        }
      }
    }
  }

驗證碼效果:       -----下載源碼-----

以上就是實現ASP.NET的全部過程,還附有源碼,希望可以幫到大家更好地了解ASP.NET驗證碼的生成方法。

您可能感興趣的文章:
  • .NET生成動態驗證碼的完整步驟
  • .NET Core 2.0如何生成圖片驗證碼完整實例
  • ASP.NET Core使用SkiaSharp實現驗證碼的示例代碼
  • 一個簡單的ASP.NET驗證碼
  • .Net Core 下使用ZKWeb.System.Drawing實現驗證碼功能(圖形驗證碼)
  • .net實現動態驗證碼功能

標簽:崇左 平涼 南寧 贛州 汕尾 青海 衢州 洛陽

巨人網絡通訊聲明:本文標題《12306動態驗證碼啟發之ASP.NET實現動態GIF驗證碼(附源碼)》,本文關鍵詞  12306,動態,驗證,碼啟,發之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《12306動態驗證碼啟發之ASP.NET實現動態GIF驗證碼(附源碼)》相關的同類信息!
  • 本頁收集關于12306動態驗證碼啟發之ASP.NET實現動態GIF驗證碼(附源碼)的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    99久久精品国产观看| 国产黄色成人av| 555www色欧美视频| 亚洲婷婷在线视频| 丰满亚洲少妇av| 国产三级久久久| 国产高清不卡一区| 中文字幕第一区综合| 午夜电影一区二区| 欧美精品高清视频| 亚洲国产成人高清精品| 欧美日韩国产色站一区二区三区| 亚洲成人福利片| 欧美变态口味重另类| 日韩精品一区国产麻豆| 亚洲国产精品黑人久久久| 首页综合国产亚洲丝袜| 亚洲一区二区三区不卡国产欧美 | 国产一区二区视频在线| 日韩视频一区二区三区| 精东粉嫩av免费一区二区三区| 亚洲精品在线免费观看视频| 国产福利电影一区二区三区| 国产精品久久看| 欧美日韩亚洲丝袜制服| 久久91精品国产91久久小草| 国产精品白丝在线| caoporn国产精品| 亚洲综合精品久久| 亚洲天堂网中文字| 91美女福利视频| 天天av天天翘天天综合网色鬼国产| 欧美疯狂性受xxxxx喷水图片| 久久99国产精品免费网站| 中文字幕在线观看一区| 欧美亚一区二区| 视频在线观看91| 久久久精品黄色| 欧美在线播放高清精品| 欧美女孩性生活视频| 一区二区成人在线观看| 日韩亚洲欧美在线| 北岛玲一区二区三区四区| 亚洲成人动漫一区| 国产精品久久久久国产精品日日| 欧美亚洲国产一区二区三区va| 久久99热99| 欧美电影免费观看完整版| 色婷婷久久久久swag精品 | 欧美三区在线观看| 国产91对白在线观看九色| 午夜成人免费视频| 亚洲国产日韩a在线播放| 国产精品久久久久久久久免费丝袜| 欧美成人bangbros| 欧美一区二区三区在线电影| 精品视频一区二区不卡| 在线精品视频免费观看| 色先锋aa成人| 色国产精品一区在线观看| 大胆亚洲人体视频| 国产成人精品影视| 国产.精品.日韩.另类.中文.在线.播放| 老司机午夜精品99久久| 久久精品国产精品亚洲红杏| 日本怡春院一区二区| 国产露脸91国语对白| 午夜一区二区三区在线观看| 久久九九全国免费| 欧美伊人久久久久久午夜久久久久| 精东粉嫩av免费一区二区三区| 日韩美女视频19| 日韩午夜小视频| 亚洲一区二区黄色| 国产精品视频一区二区三区不卡| 日韩一级免费一区| 国产精品大尺度| 国产人成亚洲第一网站在线播放| 国产精品理论片| 91精品国产色综合久久ai换脸| 日韩视频一区在线观看| 日本一区二区三区久久久久久久久不| 中文字幕不卡的av| 亚洲国产一区二区在线播放| 裸体一区二区三区| 国产精品亚洲第一| 日本久久电影网| 亚洲一区二区三区四区在线观看| 久久精品欧美一区二区三区不卡| 99精品欧美一区二区三区小说| 亚洲欧美福利一区二区| 奇米色一区二区| 成人av高清在线| 日韩三级中文字幕| 亚洲综合视频在线| 成人黄色在线视频| 欧美精品一区二区久久久| 成人免费毛片a| 精品日韩在线一区| 亚洲国产另类av| 91麻豆免费看| 国产婷婷精品av在线| 狂野欧美性猛交blacked| 在线观看区一区二| 亚洲视频一区二区在线| 国产成a人亚洲精| 欧美精品一区二区三区一线天视频| 亚洲成人动漫av| 欧美色视频一区| 亚洲一二三区视频在线观看| 国产精品美女久久久久久久久 | 国产裸体歌舞团一区二区| 欧美调教femdomvk| 亚洲欧美电影一区二区| 色噜噜久久综合| 亚洲综合色视频| 欧美日韩一区不卡| 国产在线观看免费一区| 精品国产一二三| 国产一区视频在线看| 亚洲精品一区二区三区四区高清| 另类欧美日韩国产在线| 精品欧美一区二区三区精品久久| 日本欧美在线观看| 日韩欧美专区在线| 国产福利91精品一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 99久久综合精品| 一区二区三区精密机械公司| 欧美日韩精品福利| 美女精品自拍一二三四| 久久综合狠狠综合久久激情| 国产99久久久久久免费看农村| 日本一区二区免费在线| 91性感美女视频| 日韩专区中文字幕一区二区| 日韩欧美二区三区| 成人毛片在线观看| 亚洲美女免费视频| 欧美精三区欧美精三区| 激情都市一区二区| 亚洲欧洲美洲综合色网| 夜夜嗨av一区二区三区网页| 日本大胆欧美人术艺术动态| 亚洲一区二区在线视频| 国产成a人无v码亚洲福利| 成人精品gif动图一区| 成人永久免费视频| 亚洲视频小说图片| 国产欧美一区二区精品久导航| 亚洲国产高清在线观看视频| 视频在线在亚洲| 日韩二区在线观看| 国产精品另类一区| 欧美一区二区在线观看| 国产精品一区二区久久不卡| 国产精品高潮久久久久无| 欧美视频一区在线| 国产精品一区二区视频| 五月婷婷激情综合| 国产欧美一二三区| 欧美日韩五月天| 成人精品小蝌蚪| 人人超碰91尤物精品国产| 中文字幕一区二区在线播放| 欧美电影一区二区| 99riav久久精品riav| 午夜影院久久久| 中文字幕欧美一| 日韩精品一区二区三区在线播放| 成人av资源站| 精品一区二区在线免费观看| 亚洲男人的天堂一区二区| 2023国产精华国产精品| 欧美伦理电影网| 精品一区二区三区久久| 美女久久久精品| 石原莉奈在线亚洲二区| 国产精品久久久久久久久晋中 | 欧美成人乱码一区二区三区| 99re视频这里只有精品| 久久精品二区亚洲w码| 欧美一区二区三区四区高清| 色综合中文综合网| 久久久久久久久一| 91精品婷婷国产综合久久| 91国产免费观看| 91免费视频观看| 99国内精品久久| 国产成人av网站| 国产精品一区二区在线播放| 久88久久88久久久| 午夜a成v人精品| 一区二区三区免费在线观看| 中文字幕一区av| 亚洲免费av在线| 一区二区三区精密机械公司| 亚洲精品乱码久久久久久久久| 亚洲精品视频免费观看| 香蕉久久一区二区不卡无毒影院|