程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 12306的動態驗證碼變成靜態,12306驗證碼靜態

12306的動態驗證碼變成靜態,12306驗證碼靜態

編輯:C#入門知識

12306的動態驗證碼變成靜態,12306驗證碼靜態


本以為這次12306的動態驗證碼很厲害,什麼刷票軟件都不行了,看了以後發現並不是很復雜,估計不出兩日刷票軟件又會卷土重來,開來要一個驗證碼很難遏制這些刷票軟了。

 

這次換的動態驗證碼采用的是GIF格式在客戶端輸出,至於要拿到這個gif文件然後把動態圖的各張圖片拼湊起來就能得到完整的靜態驗證碼,接下來就是識別靜態驗證碼的事情了。

比如這張動態驗證碼

他的靜態效果就是

下面是隨手寫的代碼,有點混亂

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Image imgGif = Image.FromFile(Application.StartupPath + @"\getPassCodeNew.gif"); FrameDimension ImgFrmDim = new FrameDimension(imgGif.FrameDimensionsList[0]); System.Drawing.Bitmap bp = new Bitmap(imgGif.Size.Width, imgGif.Size.Height); int nFrameCount = imgGif.GetFrameCount(ImgFrmDim); for (int i = 0; i < nFrameCount; i++) {     imgGif.SelectActiveFrame(ImgFrmDim, i);     System.Drawing.Bitmap nbp = new Bitmap(imgGif);     Color dd = nbp.GetPixel(1, 1);     if (i == 0)     {         for (int x = 0; x < nbp.Width; x++)         {             for (int y = 0; y < nbp.Height; y++)             {                 bp.SetPixel(x, y, dd);             }         }     }     for (int x = 0; x < nbp.Width; x++)     {         for (int y = 0; y < nbp.Height; y++)         {             Color c = nbp.GetPixel(x, y);             if (c == dd) continue;             bp.SetPixel(x, y, c);         }     } } bp.Save(Application.StartupPath + @"\Frame.jpg", ImageFormat.Bmp);

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved