生成验证码(vb.net)

it2022-05-09  36

生成图片验证码的代码(vb.net版) Imports  System Imports  System.Data Imports  System.Configuration Imports  System.Web Imports  System.Web.Security Imports  System.Web.UI Imports  System.Web.UI.WebControls Imports  System.Web.UI.WebControls.WebParts Imports  System.Web.UI.HtmlControls Imports  System.IO Imports  System.Drawing ' 生成图片验证码类 Public   Class  CreateImage     Public   Sub  CreateImage()     End Sub      Public   Shared   Sub  DrawImage()         Dim  img  As  CreateImage  =   New  CreateImage()        HttpContext.Current.Session( " CheckCode " =  Global.CreateImage.RndNum( 4 )        Global.CreateImage.CreateImages(HttpContext.Current.Session( " CheckCode " ).ToString())     End Sub      ' '' <summary>      ' '' 生成验证图片      ' ''</summary>      ' ''<param name="checkCode">验证字符</param>      Public   Shared   Sub  CreateImages( ByVal  checkCode  As   String )         Dim  iwidth  As   Integer   =   CType (checkCode.Length  *   13 Integer )         Dim  image  As  System.Drawing.Bitmap  =   New  System.Drawing.Bitmap(iwidth,  25 )         Dim  g  As  Graphics  =  Graphics.FromImage(image)        g.Clear(Color.White)         ' 定义颜色          Dim  c  As  Color()  =  {Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple}         ' 定义字体          Dim  font  As   String ()  =  { " Verdana " " Microsoft Sans Serif " " Comic Sans MS " " Arial " " 宋体 " }         Dim  rand  As  Random  =   New  Random()         Dim  i  As   Integer   =   0          Do   While  i  <   50              Dim  x  As   Integer   =  rand.Next(image.Width)             Dim  y  As   Integer   =  rand.Next(image.Height)            g.DrawRectangle( New  Pen(Color.LightGray,  0 ), x, y,  1 1 )            i  +=   1          Loop         i  =   0          Do   While  i  <  checkCode.Length             Dim  cindex  As   Integer   =  rand.Next( 7 )             Dim  findex  As   Integer   =  rand.Next( 5 )             Dim  f  As  Font  =   New  System.Drawing.Font(font(findex),  10 , System.Drawing.FontStyle.Bold)             Dim  b  As  Brush  =   New  System.Drawing.SolidBrush(c(cindex))             Dim  ii  As   Integer   =   4              If  (i  +   1 Mod   2   =   0   Then                 ii  =   2              End   If             g.DrawString(checkCode.Substring(i,  1 ), f, b,  3   +  (i  *   12 ), ii)            i  +=   1          Loop          ' 画一个边框         g.DrawRectangle( New  Pen(Color.Black,  0 ),  0 0 , image.Width  -   1 , image.Height  -   1 )         Dim  ms  As  System.IO.MemoryStream  =   New  System.IO.MemoryStream()        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)        HttpContext.Current.Response.ClearContent()        HttpContext.Current.Response.ContentType  =   " image/Jpeg "         HttpContext.Current.Response.BinaryWrite(ms.ToArray())        g.Dispose()        image.Dispose()     End Sub      ' '' <summary>      ' '' 生成随机的字母      ' '' </summary>      ' '' <param name="VcodeNum">生成字母的个数</param>      ' '' <returns>string</returns>      Public   Shared   Function  RndNum( ByVal  VcodeNum  As   Integer As   String          Dim  allChar  As   String   =   " 0,1,2,3,4,5,6,7,8,9 "          Dim  allCharArray()  As   String   =  allChar.Split( " , " )         Dim  randomCode  As   String   =   ""          Dim  temp  As   Integer   =   - 1          Dim  rand  As  Random  =   New  Random         Dim  i  As   Integer   =   0          Do   While  (i  <  VcodeNum)             If  (temp  <>   - 1 Then                  Dim  aa  As   Integer   =   CType (DateTime.Now.Ticks  Mod  System.Int32.MaxValue,  Integer ' 根据时间生成随机数种子                 rand  =   New  Random(aa)             End   If              Dim  t  As   Integer   =  rand.Next( 61 +   1              If  t  >  allCharArray.Length  -   1   Then  t  =  allCharArray.Length  -   1              If  temp  =  t  Then   ' 抑制产生连续重复的验证码。                 i  -=   1                 randomCode  =  Microsoft.VisualBasic.Left(randomCode, i)             End   If             temp  =  t            randomCode  =  randomCode  +  allCharArray(t)            i  +=   1          Loop          Return  randomCode     End Function End Class

生成图片验证码,请指教!

转载于:https://www.cnblogs.com/wangxiang/archive/2007/06/25/795522.html

相关资源:ASP.NET五种验证码(VB.NET)

最新回复(0)