网站验证码,乱涂乱画版
取Session("ValidateCode")即可获得图像验证码并进行对比
1Imports System.Drawing
2Partial Class WebService_Vimage
3 Inherits System.Web.UI.Page
4 Dim letterMatrix() As String = {"A", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", "5", "6", "7", "8", "9"}
5
6 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
7 Dim Instance As Random = New Random()
8
9 Dim ls As String
10 Dim i As Integer
11 For i = 0 To 4
12 Dim id As Integer = Instance.Next(0, letterMatrix.Length - 1)
13 ls = ls & letterMatrix(id)
14 Next
15 Session("ValidateCode") = ls
16 GenImg(ls)
17
18
19 End Sub
20 Private Sub GenImg(ByVal code As String)
21 Dim timer As Date
22 Dim myPalette As Bitmap = New Bitmap(170, 50)
23 Dim gh As Graphics = Graphics.FromImage(myPalette)
24 Dim rc As Rectangle = New Rectangle(0, 0, 170, 50)
25 gh.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
26 gh.FillRectangle(New SolidBrush(Color.SteelBlue), rc)
27 Dim i As Integer
28 Dim Instance As Random = New Random()
29 Dim sc As String = ""
30 For i = 0 To 4
31 If Instance.Next(0, 3) = 2 Then
32 sc = sc & code(i) & " "
33 Else
34 sc = sc & code(i)
35 End If
36 Next
37 gh.DrawString(sc, New Font("微软雅黑", 25, FontStyle.Bold), New SolidBrush(Color.White), 5, 5)
38 ' gh.DrawLine(Pens.SteelBlue, 0, 15, 100, 15)
39 myPalette = MH(myPalette)
40 gh.DrawImage(myPalette, 0, 0, myPalette.Width + Instance.Next(1, 40), myPalette.Height + Instance.Next(1, 5))
41 For i = 0 To Instance.Next(5, 10)
42 gh.DrawLine(Pens.White, Instance.Next(10, 150), Instance.Next(10, 40), Instance.Next(10, 150), Instance.Next(10, 40))
43 Next
44 gh.SmoothingMode = Drawing2D.SmoothingMode.None
45 For i = 0 To 20
46 gh.DrawLine(Pens.SteelBlue, Instance.Next(10, 150), Instance.Next(10, 40), Instance.Next(10, 150), Instance.Next(10, 40))
47 Next
48 ' gh.DrawString(Format(Date.Now.Subtract(timer).TotalMilliseconds, "0.000") & "ms", New Font("Arial", "8"), Brushes.Black, 0, 30)
49 myPalette.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
50 gh.Dispose()
51 myPalette.Dispose()
52 End Sub
53 Function MH(ByVal myPalette As Bitmap) As Bitmap
54 On Error Resume Next
55 Dim Instance As Random = New Random()
56 Dim MHb As Bitmap = myPalette
57 Dim i, j As Short
58 Dim Rx, Ry As Short
59 Dim X, Y As Integer
60 X = myPalette.Width
61 Y = myPalette.Height
62 For i = 1 To Y
63 For j = 1 To X
64 Rx = Instance.Next(2, 4)
65 Ry = Instance.Next(2, 4)
66 Dim col As Color = myPalette.GetPixel((j) + Ry, (i) + Rx)
67 MHb.SetPixel(j, i, col)
68 Next
69
70 Next
71 MH = MHb
72 End Function
73
74
75End Class
76
2Partial Class WebService_Vimage
3 Inherits System.Web.UI.Page
4 Dim letterMatrix() As String = {"A", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", "5", "6", "7", "8", "9"}
5
6 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
7 Dim Instance As Random = New Random()
8
9 Dim ls As String
10 Dim i As Integer
11 For i = 0 To 4
12 Dim id As Integer = Instance.Next(0, letterMatrix.Length - 1)
13 ls = ls & letterMatrix(id)
14 Next
15 Session("ValidateCode") = ls
16 GenImg(ls)
17
18
19 End Sub
20 Private Sub GenImg(ByVal code As String)
21 Dim timer As Date
22 Dim myPalette As Bitmap = New Bitmap(170, 50)
23 Dim gh As Graphics = Graphics.FromImage(myPalette)
24 Dim rc As Rectangle = New Rectangle(0, 0, 170, 50)
25 gh.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
26 gh.FillRectangle(New SolidBrush(Color.SteelBlue), rc)
27 Dim i As Integer
28 Dim Instance As Random = New Random()
29 Dim sc As String = ""
30 For i = 0 To 4
31 If Instance.Next(0, 3) = 2 Then
32 sc = sc & code(i) & " "
33 Else
34 sc = sc & code(i)
35 End If
36 Next
37 gh.DrawString(sc, New Font("微软雅黑", 25, FontStyle.Bold), New SolidBrush(Color.White), 5, 5)
38 ' gh.DrawLine(Pens.SteelBlue, 0, 15, 100, 15)
39 myPalette = MH(myPalette)
40 gh.DrawImage(myPalette, 0, 0, myPalette.Width + Instance.Next(1, 40), myPalette.Height + Instance.Next(1, 5))
41 For i = 0 To Instance.Next(5, 10)
42 gh.DrawLine(Pens.White, Instance.Next(10, 150), Instance.Next(10, 40), Instance.Next(10, 150), Instance.Next(10, 40))
43 Next
44 gh.SmoothingMode = Drawing2D.SmoothingMode.None
45 For i = 0 To 20
46 gh.DrawLine(Pens.SteelBlue, Instance.Next(10, 150), Instance.Next(10, 40), Instance.Next(10, 150), Instance.Next(10, 40))
47 Next
48 ' gh.DrawString(Format(Date.Now.Subtract(timer).TotalMilliseconds, "0.000") & "ms", New Font("Arial", "8"), Brushes.Black, 0, 30)
49 myPalette.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
50 gh.Dispose()
51 myPalette.Dispose()
52 End Sub
53 Function MH(ByVal myPalette As Bitmap) As Bitmap
54 On Error Resume Next
55 Dim Instance As Random = New Random()
56 Dim MHb As Bitmap = myPalette
57 Dim i, j As Short
58 Dim Rx, Ry As Short
59 Dim X, Y As Integer
60 X = myPalette.Width
61 Y = myPalette.Height
62 For i = 1 To Y
63 For j = 1 To X
64 Rx = Instance.Next(2, 4)
65 Ry = Instance.Next(2, 4)
66 Dim col As Color = myPalette.GetPixel((j) + Ry, (i) + Rx)
67 MHb.SetPixel(j, i, col)
68 Next
69
70 Next
71 MH = MHb
72 End Function
73
74
75End Class
76