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
完成效果如下
http://www.cnblogs.com/images/cnblogs_com/clongge/y.jpg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值