asp仿漂亮的discuz论坛验证码(MysucCode)
作者:hayden 日期:2009-02-11
使用asp的jpeg组件,我们可以做出各种样式的漂亮的验证码,只是苦于目前大多数服务器的JPEG组件版本太低,无法消除文字而造成的毛边,除非用非透明模式去绘制字体,但这样又无法达到仿制discuz论坛验证码的目的,因此,暂且先不管这么多了,文字有毛边锯齿就先随着它,这并不能成为当前验证码的缺憾。
好了,先看图片预览:




该验证码下载:
点击下载此文件(相关文件Getcode.asp已增加详细注释)
该验证码非常简单明了,就算你是新手,在你查看过代码注释后,绝对也可以修改自如,可以很容易的修改成文字验证码、加法或其它算法的验证码等等。
相关演示请见本Blog评论及留言。
此处粘贴部分代码:
‘注:以下代码为该asp Mysuccode验证码的部分,不可独立运行使用
' 函数(drawBackGroud):打开背景图片
Function drawBackGroud(srandom,swidth,sheight)
Jpeg.Open Server.MapPath("background/background"&srandom&".jpg")
Jpeg.Width = swidth
Jpeg.Height = sheight
End Function
' 函数(drawLines):绘制随机线
Sub drawLines
jpeg.Canvas.Pen.Color = &HADCD3C
jpeg.Canvas.DrawLine 0, Int(Rnd * jpeg.Height), jpeg.Width, Int(Rnd * jpeg.Height)
End Sub
' 函数(drawBar):绘制随机矩形框
Sub drawBar
jpeg.Canvas.Brush.Solid = False '填充
'矩形边框颜色
jpeg.Canvas.Pen.Color = &H9CCF00
'绘制矩形框
jpeg.Canvas.Bar Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 50)+20,Int(Rnd * 50)+20
End Sub
' 函数(drawCircle):绘制随机圆
Sub drawCircle
jpeg.Canvas.Brush.Solid = False '填充
jpeg.Canvas.Pen.Color = &H8080FF
jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+5
jpeg.Canvas.Pen.Color = &HEEEEEE
jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+10
End Sub
' 函数(addLetter)在验证码图片当前位置打印字符
Sub addLetter(theLetter)
' 字体的颜色
jpeg.Canvas.Font.Color = textColour
' 字体阴影
jpeg.Canvas.Font.ShadowColor = &HFFFFFF
' 是否为粗体 此处个人感觉加粗效果更好,故不做随机判断,而是直接设定加粗
'if doTextStyle then
jpeg.Canvas.Font.Bold = True
'End If
' 是否增加下划线 此处个人感觉很丑,注释掉!
'if doTextStyle then
' jpeg.Canvas.Font.Underlined = True
'End If
' 是否为斜体
if doTextStyle then
jpeg.Canvas.Font.Italic = True
End If
' 字体
jpeg.Canvas.Font.Family = "Arial Black"'randomFont()
' 字体大小
jpeg.Canvas.Font.Size = randomFontSize()
' 文字清晰度
jpeg.Canvas.Font.Quality = 4
' 背景色 当前使用了背景图,故此处注释掉
'jpeg.Canvas.Font.BkColor = backColour
' 字体背景模式(处理平滑)
jpeg.Canvas.Font.BkMode = "transparent"
' 绘制字符
jpeg.canvas.print pixelsAcross, Int(Rnd * 5), theLetter
' 字符宽度
pixelsAcross = pixelsAcross + Int(Rnd * 10)+30
End Sub
好了,先看图片预览:




该验证码下载:
点击下载此文件(相关文件Getcode.asp已增加详细注释)该验证码非常简单明了,就算你是新手,在你查看过代码注释后,绝对也可以修改自如,可以很容易的修改成文字验证码、加法或其它算法的验证码等等。
相关演示请见本Blog评论及留言。
此处粘贴部分代码:
复制内容到剪贴板
程序代码
程序代码‘注:以下代码为该asp Mysuccode验证码的部分,不可独立运行使用
' 函数(drawBackGroud):打开背景图片
Function drawBackGroud(srandom,swidth,sheight)
Jpeg.Open Server.MapPath("background/background"&srandom&".jpg")
Jpeg.Width = swidth
Jpeg.Height = sheight
End Function
' 函数(drawLines):绘制随机线
Sub drawLines
jpeg.Canvas.Pen.Color = &HADCD3C
jpeg.Canvas.DrawLine 0, Int(Rnd * jpeg.Height), jpeg.Width, Int(Rnd * jpeg.Height)
End Sub
' 函数(drawBar):绘制随机矩形框
Sub drawBar
jpeg.Canvas.Brush.Solid = False '填充
'矩形边框颜色
jpeg.Canvas.Pen.Color = &H9CCF00
'绘制矩形框
jpeg.Canvas.Bar Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 50)+20,Int(Rnd * 50)+20
End Sub
' 函数(drawCircle):绘制随机圆
Sub drawCircle
jpeg.Canvas.Brush.Solid = False '填充
jpeg.Canvas.Pen.Color = &H8080FF
jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+5
jpeg.Canvas.Pen.Color = &HEEEEEE
jpeg.Canvas.Circle Int(Rnd * jpeg.Width), Int(Rnd * jpeg.Height), Int(Rnd * 10)+10
End Sub
' 函数(addLetter)在验证码图片当前位置打印字符
Sub addLetter(theLetter)
' 字体的颜色
jpeg.Canvas.Font.Color = textColour
' 字体阴影
jpeg.Canvas.Font.ShadowColor = &HFFFFFF
' 是否为粗体 此处个人感觉加粗效果更好,故不做随机判断,而是直接设定加粗
'if doTextStyle then
jpeg.Canvas.Font.Bold = True
'End If
' 是否增加下划线 此处个人感觉很丑,注释掉!
'if doTextStyle then
' jpeg.Canvas.Font.Underlined = True
'End If
' 是否为斜体
if doTextStyle then
jpeg.Canvas.Font.Italic = True
End If
' 字体
jpeg.Canvas.Font.Family = "Arial Black"'randomFont()
' 字体大小
jpeg.Canvas.Font.Size = randomFontSize()
' 文字清晰度
jpeg.Canvas.Font.Quality = 4
' 背景色 当前使用了背景图,故此处注释掉
'jpeg.Canvas.Font.BkColor = backColour
' 字体背景模式(处理平滑)
jpeg.Canvas.Font.BkMode = "transparent"
' 绘制字符
jpeg.canvas.print pixelsAcross, Int(Rnd * 5), theLetter
' 字符宽度
pixelsAcross = pixelsAcross + Int(Rnd * 10)+30
End Sub
博主向您推荐的其它文章
- 相关日志
- 404错误伪静态类封装class RewriteBase[992]
- ASP在线查询显示IP的小程序(IP数据库090130)[738]
- 一步到位之IIS下配制PHP+MYSQL[414]
- mysuc精致留言板[3983]
- asp之自动闭合HTML/ubb标签函数+简单注释[465]
- Asp性能优化之Response.IsClientConnected属性及其应用示例[468]
- 比较经典的一款ASP验证码(支持中文/英文/数字)[1779]
- ASP汉字转拼音,支持自定义特殊词语[796]
- SQL文本字段的数字排序问题[4362]
- ASP远程获取(小偷程序)+动态载入JS+JS操作COOKIES的一个简单的实例[5817]
评论: 20 | 引用: 0 | 查看次数: -
- 日志信息
发表评论


文章来自:
Tags: 

那位朋友行的能给我发个邮件吗?谢谢
引用来自 yifan
不过上传到服务器上以后.就不行了.
大概是jpeg组件版本太低了?
本地是2.1.0.2 ,服务器上是1.3.0.0
请问hayden你是在什么版本下测试的呢?