天天看点

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)

继续阅读