现在的位置: 首页 > 综合 > 正文

隨機驗證碼

2012年10月12日 ⁄ 综合 ⁄ 共 1947字 ⁄ 字号 评论关闭

 Session("gif") = RndNum(5)
            Me.IMG1.Src = "../vendor_admin/random_image.aspx"

random_image.aspx:
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.Drawing.Text
Imports System.Drawing
Imports System.Text

Partial Class public_random_image
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      
        Dim ImagePath As String = "~/image/Validator.jpg"

        Dim gif As String = Session("gif") 'RndNum(5)

        Dim _text() As Char = gif.ToCharArray(0, gif.Length)
        gif = _text(0).ToString + " " + _text(1).ToString + _text(2).ToString + " " + _text(3).ToString + " " + _text(4).ToString

 

        '/创建Bmp位图
        Dim bitMapImage As Bitmap = New System.Drawing.Bitmap(Server.MapPath(ImagePath))
        Dim graphicImage As Graphics = Graphics.FromImage(bitMapImage)

        '/设置画笔的输出模式
        graphicImage.SmoothingMode = SmoothingMode.HighQuality ' SmoothingMode.HighSpeed
        '/添加文本字符串
        graphicImage.DrawString(gif, New Font("Arial", 15, FontStyle.Bold), SystemBrushes.WindowText, New Point(0, 0))

        '/设置图像输出的格式
        Response.ContentType = "image/jpeg"

        '/保存数据流
        bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg)

        '/释放占用的资源
        graphicImage.Dispose()
        bitMapImage.Dispose()
    End Sub

End Class

RndNum class:
'函数名称:RndNum
    '函数参数:VcodeNum--设定返回随机字符串的位数
    '函数功能:产生数字和字符混合的随机字符串
    Function RndNum(ByVal VcodeNum) As String
        Dim Vchar As String = "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"
        Dim VcArray() As String = Split(Vchar, ",") '将字符串生成数组
        Dim VNum As String = ""
        Dim i As Byte
        For i = 1 To VcodeNum
            Randomize()
            VNum = VNum & VcArray(Int(35 * Rnd())) '数组一般从0开始读取,所以这里为35*Rnd
          
        Next
        Return VNum

        '        While (iNum = Convert.ToInt32(VcArray.Length * random.NextDouble())) = VcArray.Length
        '            iNum = Convert.ToInt32(VcArray.Length * random.NextDouble())
        '        End While
        '        VNum += VcArray(iNum)
    End Function

抱歉!评论已关闭.