一个.net图片验证码的实现
页面代码
If Txt_code.Text.Trim <> Session("checkcode").ToString Then
Alert(Page, "输入验证码错误,请重新输入")
Exit Sub
End If主要实现
1
<asp:Image id="Image1" width="100" runat="server" ImageUrl="~/manage/mycheckcode.aspx"></asp:Image>
后台代码实现![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
1
Imports System.Drawing.Imaging
2
Imports System.Drawing.Drawing2D
3
Public Class MycheckCodedd
4
Inherits System.Web.UI.Page
5![](/Images/OutliningIndicators/InBlock.gif)
6
Web 窗体设计器生成的代码
24![](/Images/OutliningIndicators/InBlock.gif)
25
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
26
'在此处放置初始化页的用户代码
27
Response.Buffer = True
28
draw2(getNum.ToString)
29
End Sub
30![](/Images/OutliningIndicators/InBlock.gif)
31
Private Function getNum() As Int64
32
Dim zNum, i, j As Int64
33![](/Images/OutliningIndicators/InBlock.gif)
34
Randomize(Timer)
35
zNum = CInt(8999 * Rnd() + 1000)
36
Session("CheckCode") = zNum
37
Return zNum
38
End Function
39![](/Images/OutliningIndicators/InBlock.gif)
40
Private Sub draw()
41
Response.ContentType = "image/jpeg"
42
Dim width As Int32
43
Dim height As Int32
44
width = 300
45
height = 300
46
Dim x, y As Int16
47
x = 30
48
y = 50
49
Dim zNum, i, j
50
Dim Ados, Ados1
51
Randomize(Timer)
52
zNum = CInt(8999 * Rnd() + 1000)
53
Session("CheckCode") = zNum
54![](/Images/OutliningIndicators/InBlock.gif)
55
Dim objBitmap As Bitmap
56
objBitmap = New Bitmap(width, height)
57![](/Images/OutliningIndicators/InBlock.gif)
58
Dim objGraphics As Graphics
59
objGraphics = Graphics.FromImage(objBitmap)
60![](/Images/OutliningIndicators/InBlock.gif)
61
objGraphics.DrawRectangle(New Pen(Color.Black), 0, 0, width, height)
62
objGraphics.FillRectangle(New SolidBrush(Color.White), 1, 1, width - 2, height - 2)
63![](/Images/OutliningIndicators/InBlock.gif)
64
Dim objBrush As New SolidBrush(Color.Blue)
65
objGraphics.SmoothingMode = SmoothingMode.AntiAlias
66
objBitmap.Save(Response.OutputStream, ImageFormat.Jpeg)
67
objGraphics.Dispose()
68
objBitmap.Dispose()
69
End Sub
70![](/Images/OutliningIndicators/InBlock.gif)
71
Private Sub draw2(ByVal str As String)
72
Dim image As New Bitmap(600, 200)
73
Dim axesfont As New Font("arial", 110, FontStyle.Bold)
74![](/Images/OutliningIndicators/InBlock.gif)
75
Dim blackbrush As New SolidBrush(Color.SteelBlue)
76
Dim redpen As New Pen(Color.Red, 5)
77
Dim blackpen As New Pen(Color.Black, 2)
78
Dim g As Graphics
79![](/Images/OutliningIndicators/InBlock.gif)
80
g = Graphics.FromImage(image)
81
g.Clear(Color.White)
82
g.FillRectangle(New SolidBrush(Color.White), 0, 0, 600, 200)
83
g.DrawString(str, axesfont, blackbrush, 10, 10)
84
' g.DrawLine(blackpen, 0, 2, 210, 250)
85
' g.DrawLine(redpen, 600, 200, 0, 0)
86
' g.DrawLine(blackpen, 210, 250, 310, 50)
87
' g.DrawLine(redpen, 310, 50, 210, 350)
88
image.Save(Response.OutputStream, ImageFormat.Jpeg)
89![](/Images/OutliningIndicators/InBlock.gif)
90
End Sub
91![](/Images/OutliningIndicators/InBlock.gif)
92![](/Images/OutliningIndicators/InBlock.gif)
93![](/Images/OutliningIndicators/InBlock.gif)
94
Function NumCode()
95
Response.Expires = -1
96
Response.AddHeader("Pragma", "no-cache")
97
Response.AddHeader("cache-ctrol", "no-cache")
98
On Error Resume Next
99
Dim zNum, i, j
100
Dim Ados, Ados1
101
Randomize(Timer)
102
zNum = CInt(8999 * Rnd() + 1000)
103
Session("CheckCode") = zNum
104
Dim zimg(4), NStr
105
NStr = CStr(zNum)
106
For i = 0 To 3
107
zimg(i) = CInt(Mid(NStr, i + 1, 1))
108
Next
109
Dim Pos
110
Ados = Server.CreateObject("Adodb.Stream")
111
Ados.Mode = 3
112
Ados.Type = 1
113
Ados.Open()
114
Ados1 = Server.CreateObject("Adodb.Stream")
115
Ados1.Mode = 3
116
Ados1.Type = 1
117
Ados1.Open()
118
Ados.LoadFromFile(Server.MapPath("body.Fix"))
119
Ados1.write(Ados.read(1280))
120
For i = 0 To 3
121
Ados.Position = (9 - zimg(i)) * 320
122
Ados1.Position = i * 320
123
Ados1.write(Ados.read(320))
124
Next
125
Ados.LoadFromFile(Server.MapPath("head.fix"))
126![](/Images/OutliningIndicators/InBlock.gif)
127
Pos = System.Text.Encoding.Default.GetBytes(Ados.read()).Length()
128![](/Images/OutliningIndicators/InBlock.gif)
129
Ados.Position = Pos
130
For i = 0 To 9 Step 1
131
For j = 0 To 3
132
Ados1.Position = i * 32 + j * 320
133
Ados.Position = Pos + 30 * j + i * 120
134
Ados.write(Ados1.read(30))
135
Next
136
Next
137
Response.ContentType = "image/BMP"
138
Ados.Position = 0
139
Response.BinaryWrite(Ados.read())
140
Ados.Close() : Ados = Nothing
141
Ados1.Close() : Ados1 = Nothing
142
If Err.Description <> "" Then Session("CheckCode") = 9999
143
End Function
144![](/Images/OutliningIndicators/InBlock.gif)
145![](/Images/OutliningIndicators/InBlock.gif)
146![](/Images/OutliningIndicators/InBlock.gif)
147
End Class
148![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
148
![](/Images/OutliningIndicators/None.gif)