[会员中心]  [发布文章][发布软件]  [中文繁體] 
 文章·资料  电脑软件  手机软件  网站源码
   本 站 搜 索
[选项]
   推 荐 文 章       More...
华硕易电脑(ASUS Eee PC 1025C)驱动程序(Windows XP)安装参考(图) 华硕易电脑(ASUS Eee PC 1025C..
先来段开场白:为了外出携带方便..
Acronis True Image 使用说明 Acronis True Image 使用说明
  一款可以在Windows下使用..
Norton Ghost 使用详解 Norton Ghost 使用详解
一、分区备份   使用Ghost..
   阅 读 排 行
Windows 系统安装或备份时 ISO,GHO,WIM,ESD,PMF 都是什么文件类型 Windows 系统安装或备份时 ISO,GH..
【ISO 文件】 ISO 文件其实就..
使用“自动点击器”APP 在抖音直播间自动点赞 使用“自动点击器”APP 在抖音直..
看过抖音直播的朋友都知道,进入..
OPPO 手机的锁屏时间设置成横向显示 OPPO 手机的锁屏时间设置成横向..
第一次使用 OPPO 手机,桌面和锁..
电脑机箱(主板)前面板 USB 数据线的接线参考(图) 电脑机箱(主板)前面板 USB 数据..
  一、概述   因为每个 US..
抖音直播录屏的草稿保存位置 抖音直播录屏的草稿保存位置
抖音直播录屏,保存为“草稿”后,..
微信收到 flv 格式视频,如何播放? 微信收到 flv 格式视频,如何播放?
  微信上收到一个 flv 格式视频..
TrustAsia/DigiCert/Let s Encrypt 的免费 SSL 证书,多款网页浏览器都无法正常打开 TrustAsia/DigiCert/Let s Encryp..
云服务器安装了 Windows Server 2..
三星打印机(SCX-4521)提示“墨粉不足”设置 三星打印机(SCX-4521)提示“墨粉..
  三星打印机(SCX-4521)在添加..
文 章 信 息
无组件生成验证码-GIF格式
评论()][留言][收藏
[文章分类:电脑·手机·网络 / 网站设计·开发·优化][阅读选项
无组件生成验证码-GIF格式 

来自:蓝色理想 
<% 
Option Explicit ’ 显示声明 

Class Com_GifCode_Class 
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 
’ Author: Layen support@ssaw.net 84815733(QQ) 
’ Thanks: Laomi, Laomiao, NetRube 
’ 2006-01-02 
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 
Public Noisy, Count, Width, Height, Angle, Offset, Border 

Private Graph(), Margin(3) 

Private Sub Class_Initialize() 
Randomize 
Noisy = 16 ’ 干扰点出现的概率 
Count = 4 ’ 字符数量 
Width = 80 ’ 图片宽度 
Height = 20 ’ 图片高度 
Angle = 2 ’ 角度随机变化量 
Offset = 20 ’ 偏移随机变化量 
Border = 1 ’ 边框大小 
End Sub 

Public Function Create() 

Const cCharSet = "123456789" 

Dim i, x, y 

Dim vValidCode : vValidCode = "" 
Dim vIndex 

ReDim Graph(Width-1, Height-1) 

For i = 0 To Count - 1 
vIndex = Int(Rnd * Len(cCharSet)) 
vValidCode = vValidCode + Mid(cCharSet, vIndex+1 , 1) 
SetDraw vIndex, i 
Next 

Create = vValidCode 

End Function 

Sub SetDot(pX, pY) 
If pX * (Width-pX-1) >= 0 And pY * (Height-pY-1) >= 0 Then 
Graph(pX, pY) = 1 
End If 
End Sub 

Public Sub SetDraw(pIndex, pNumber) 

’ 字符数据 
Dim DotData(8) 
DotData(0) = Array(30, 15, 50, 1, 50, 100) 
DotData(1) = Array(1 ,34 ,30 ,1 ,71, 1, 100, 34, 1, 100, 93, 100, 100, 86) 
DotData(2) = Array(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70) 
DotData(3) = Array(100, 73, 6, 73, 75, 6, 75, 100) 
DotData(4) = Array(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95) 
DotData(5) = Array(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 70, 50, 30, 50, 1, 60) 
DotData(6) = Array(6, 26, 6, 6, 100, 6, 53, 100) 
DotData(7) = Array(100, 30, 100, 20, 70, 1, 30, 1, 1, 20, 1, 30, 100, 70, 100, 80, 70, 100, 30, 100, 1, 80, 1, 70, 100, 30) 
DotData(8) = Array(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50, 100, 40) 

Dim vExtent : vExtent = Width / Count 
Margin(0) = Border + vExtent * (Rnd * Offset) / 100 + Margin(1) 
Margin(1) = vExtent * (pNumber + 1) - Border - vExtent * (Rnd * Offset) / 100 
Margin(2) = Border + Height * (Rnd * Offset) / 100 
Margin(3) = Height - Border - Height * (Rnd * Offset) / 100 

Dim vStartX, vEndX, vStartY, vEndY 
Dim vWidth, vHeight, vDX, vDY, vDeltaT 

Dim vAngle, vLength 

vWidth = Int(Margin(1) - Margin(0)) 

vHeight = Int(Margin(3) - Margin(2)) 

’ 起始坐标 
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100) 

vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100) 

Dim i, j 
For i = 1 To UBound(DotData(pIndex), 1)/2 

If DotData(pIndex)(2*i-2) <> 0 And DotData(pIndex)(2*i) <> 0 Then 

’ 终点坐标 
vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100 

vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100 

’ 横向差距 
vDX = vEndX - vStartX 
’ 纵向差距 
vDY = vEndY - vStartY 

’ 倾斜角度 
If vDX = 0 Then 
vAngle = Sgn(vDY) * 3.14/2 
Else 
vAngle = Atn(vDY / vDX) 
End If 

’ 两坐标距离 
If Sin(vAngle) = 0 Then 
vLength = vDX 
Else 
vLength = vDY / Sin(vAngle) 
End If 

’ 随机转动角度 
vAngle = vAngle + (Rnd - 0.5) * 2 * Angle * 3.14 * 2 / 100 

vDX = Int(Cos(vAngle) * vLength) 

vDY = Int(Sin(vAngle) * vLength) 

If Abs(vDX) > Abs(vDY) Then vDeltaT = Abs(vDX) Else vDeltaT = Abs(vDY) 

For j = 1 To vDeltaT 
SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT 
Next 

vStartX = vStartX + vDX 

vStartY = vStartY + vDY 
End If 
Next 
End Sub 

Public Sub Output() 

Response.Expires = -9999 
Response.AddHeader "pragma", "no-cache" 
Response.AddHeader "cache-ctrol", "no-cache" 
Response.ContentType = "image/gif" 

’ 文件类型 
Response.BinaryWrite ChrB(Asc("G")) & ChrB(Asc("I")) & ChrB(Asc("F")) 
’ 版本信息 
Response.BinaryWrite ChrB(Asc("8")) & ChrB(Asc("9")) & ChrB(Asc("a")) 
’ 逻辑屏幕宽度 
Response.BinaryWrite ChrB(Width Mod 256) & ChrB((Width \ 256) Mod 256) 
’ 逻辑屏幕高度 
Response.BinaryWrite ChrB(Height Mod 256) & ChrB((Height \ 256) Mod 256) 

Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0) 
’ 全局颜色列表 
Response.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255) 

Response.BinaryWrite ChrB(0) & ChrB(85) & ChrB(255) 

’ 图象标识符 
Response.BinaryWrite ChrB(Asc(",")) 

Response.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) 
’ 图象宽度 
Response.BinaryWrite ChrB(Width Mod 256) & ChrB((Width \ 256) Mod 256) 
’ 图象高度 
Response.BinaryWrite ChrB(Height Mod 256) & ChrB((Height \ 256) Mod 256) 

Response.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255) 

Dim x, y, i : i = 0 
For y = 0 To Height - 1 
For x = 0 To Width - 1 
If Rnd < Noisy / 100 Then 
Response.BinaryWrite ChrB(1-Graph(x, y)) 
Else 
If x * (x-Width) = 0 Or y * (y-Height) = 0 Then 
Response.BinaryWrite ChrB(Graph(x, y)) 
Else 
If Graph(x-1, y) = 1 Or Graph(x, y) Or Graph(x, y-1) = 1 Then 
Response.BinaryWrite ChrB(1) 
Else 
Response.BinaryWrite ChrB(0) 
End If 
End If 
End If 
If (y * Width + x + 1) Mod 126 = 0 Then 
Response.BinaryWrite ChrB(128) 
i = i + 1 
End If 
If (y * Width + x + i + 1) Mod 255 = 0 Then 
If (Width*Height - y * Width - x - 1) > 255 Then 
Response.BinaryWrite ChrB(255) 
Else 
Response.BinaryWrite ChrB(Width * Height Mod 255) 
End If 
End If 
Next 
Next 
Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59) 
End Sub 
End Class 

Dim mCode 
Set mCode = New Com_GifCode_Class 
Session("GetCode") = mCode.Create() 
mCode.Output() 
Set mCode = Nothing 
%> 
保存成ASP文件即可看见效果! 

文章作者:未知  更新日期:2006-05-13
[文章浏览:][打印文章][发送文章
相关文章
·无组件生成验证码-BMP格式2006-05-13
阅读说明
·本站大部分文章转载于网络,如有侵权请留言告知,本站即做删除处理。
·本站法律法规类文章转载自[中国政府网(www.org.cn)],相关法律法规如有修订,请浏览[中国政府网]网站。
·本站转载的文章,不为其有效性,实效性,安全性,可用性等做保证。
·如果有什么问题,或者意见建议,请联系[网站管理员]
  原“浪人文章”和“浪人下载”网站已合并为“老若尔文章软件站”,域名:https://lre.cn
  本站使用【啊估文章软件站】网站系统    网站管理员留言簿〗〖捐助     闽ICP备08009617号