天天看點

Asp.Net生成圖檔驗證碼(vb)

Validate.vb

代碼如下

ImportsSystem

ImportsSystem.Drawing.Drawing2D

ImportsSystem.Drawing.imaging

ImportsSystem.Drawing

ImportsSystem.Web.UI

ImportsSystem.IO

PublicClassValidateClassValidate

PublicClassCreatValidateNumberClassCreatValidateNumber

'生成驗證碼

PublicFunctionCreatValidateNumber()FunctionCreatValidateNumber(ByVallengthAsInteger)

DimvcharAsString="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,w,x,y,z"

Dimvcarray()AsString=Split(vchar,",")'将字元串生成數組

DimvnumAsString=""

DimiAsByte

Fori=1Tolength

Randomize()

vnum=vnum&vcarray(Int(35*Rnd()))'數組一般從0開始讀取,是以這裡為35*rnd

Next

Returnvnum

EndFunction

'建立驗證碼圖檔

PublicSubCreatevalidateGraphic()SubCreatevalidateGraphic(ByValpageAsPage,ByValvalidatenumAsString)

DimimageAsBitmap=NewBitmap(CInt(Math.Ceiling(validatenum.Length*12.5)),22)

DimgAsGraphics=Graphics.FromImage(image)

Try

'生成随機生成器

DimrandomAsNewRandom

'清空圖檔背景色

g.Clear(Color.White)

'畫圖檔的幹擾線

DimiAsInteger

Fori=0To24

Dimx1AsInteger=random.Next(image.Width)

Dimx2AsInteger=random.Next(image.Width)

Dimy1AsInteger=random.Next(image.Height)

Dimy2AsInteger=random.Next(image.Height)

g.DrawLine(NewPen(Color.Silver),x1,y1,x2,y2)

Next

'畫驗證碼

DimfontAsFont=NewFont("Arial",12,(FontStyle.BoldAndFontStyle.Italic))

DimbrushAsLinearGradientBrush=NewLinearGradientBrush(NewRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2F,True)

g.DrawString(validatenum,font,brush,3,2)

'畫前景幹擾點

Fori=0To24

DimxAsInteger=random.Next(image.Width)

DimyAsInteger=random.Next(image.Height)

image.SetPixel(x,y,Color.FromArgb(random.Next()))

Next

'畫圖檔的邊框線

g.DrawRectangle(NewPen(Color.Silver),0,0,image.Width-1,image.Height-1)

'儲存圖檔

DimstreamAsNewMemoryStream

image.Save(stream,ImageFormat.Jpeg)

'輸出圖檔

page.Response.Clear()

page.Response.ContentType="image/jpeg"

page.Response.BinaryWrite(stream.ToArray())

CatchexAsException

Finally

g.Dispose()

image.Dispose()

EndTry

EndSub

EndClass

EndClass

建立一個img.aspx的窗體

背景代碼如下

PublicClassimgClassimg

InheritsSystem.Web.UI.Page

Web窗體設計器生成的代碼#Region"Web窗體設計器生成的代碼"

'該調用是Web窗體設計器所必需的。

PrivateSubInitializeComponent()SubInitializeComponent()

EndSub

'注意:以下占位符聲明是Web窗體設計器所必需的。

'不要删除或移動它。

PrivatedesignerPlaceholderDeclarationAsSystem.Object

PrivateSubPage_Init()SubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Init

'CODEGEN:此方法調用是Web窗體設計器所必需的

'不要使用代碼編輯器修改它。

InitializeComponent()

EndSub

#EndRegion

PublicvalidatesAsNewValidate.CreatValidateNumber

PublicvaliAsString

PrivateSubPage_Load()SubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

'在此處放置初始化頁的使用者代碼

vali=validates.CreatValidateNumber(5)

validates.CreatevalidateGraphic(Me,vali)

Session("vali")=vali

EndSub

EndClass

調用的HMTL

WebForm1

背景

PrivateSubButton1_Click()SubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

Iftb_valide.Text=Session("vali")Then

Response.Write("提示:驗證通過")

Else

Response.Write("所填寫的驗證碼與所給的不符")

EndIf

EndSub

完成效果如下

Asp.Net生成圖檔驗證碼(vb)

繼續閱讀