ASP程序调用验证码

ASP程序调用验证码 调用方法 < img src = " getcode.asp " >< input name = " vcode "  type = " input " >
ASP程序调用验证码在服务器验证的时候Session(
" GetCode " =  Request.Form( " vcode " )
ASP程序调用验证码
ASP程序调用验证码
ASP程序调用验证码文件GetCode.asp
ASP程序调用验证码
< %
ASP程序调用验证码
Const  nMaxSaturation  =   100     '  最大色彩饱和度
ASP程序调用验证码
Const  nBlankNoisyDotOdds  =   0.2    '  空白处噪点率
ASP程序调用验证码
Const  nColorNoisyDotOdds  =   0.1   '  有色处噪点率
ASP程序调用验证码
Const  nCharCount  =   4        '  产生的字符个数
ASP程序调用验证码
Const  nPixelWidth  =   20       '  单个字符位图的宽度
ASP程序调用验证码
Const  nPixelHeight  =   20         '  单个字符位图的高度
ASP程序调用验证码
Const  nColorHue  =   220        '  显示验证码的色调(-1表示随机色调, -2表示灰度色调)
ASP程序调用验证码
Const  nAngleRandom  =   10           '  角度随机量
ASP程序调用验证码
Const  nLengthRandom  =   10          '  长度随机量(百分比)
ASP程序调用验证码
Const  cCharSet  =   " 0123456789 "
ASP程序调用验证码                                
'  构成验证码的字符集
ASP程序调用验证码
                                 '  如果扩充了下边的字母矢量库,则可以相应扩充这个字符集
ASP程序调用验证码

ASP程序调用验证码
Dim  Buf(), DigtalStr
ASP程序调用验证码
Dim  Lines(), LineCount
ASP程序调用验证码
Dim  CursorX, CursorY, DirX, DirY
ASP程序调用验证码
ASP程序调用验证码
Randomize
ASP程序调用验证码
Call  CreatValidCode( " GetCode " )
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Reset()
ASP程序调用验证码 
'  复位矢量笔和环境变量
ASP程序调用验证码
 LineCount  =   0
ASP程序调用验证码 CursorX 
=   0
ASP程序调用验证码 CursorY 
=   0
ASP程序调用验证码 
'  初始的光笔方向是垂直向下
ASP程序调用验证码
 DirX  =   0
ASP程序调用验证码 DirY 
=   1
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Clear()
ASP程序调用验证码 
'  清空位图阵列
ASP程序调用验证码
  Dim  i, j
ASP程序调用验证码 
ReDim  Buf(nPixelHeight  -   1 , nCharCount  *  nPixelWidth  -   1 )
ASP程序调用验证码
ASP程序调用验证码 
For  j  =   0   To  nPixelHeight  -   1
ASP程序调用验证码  
For  i  =   0   To  nCharCount  *  nPixelWidth  -   1
ASP程序调用验证码   Buf(j, i) 
=   0
ASP程序调用验证码  
Next
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_PSet(X, Y)
ASP程序调用验证码 
'  在位图阵列上画点
ASP程序调用验证码
 Buf(Y, X)  =   1
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Line(X1, Y1, X2, Y2)
ASP程序调用验证码 
'  在位图阵列上画线
ASP程序调用验证码
  Dim  DX, DY, DeltaT, i
ASP程序调用验证码 
ASP程序调用验证码 DX 
=  X2  -  X1
ASP程序调用验证码 DY 
=  Y2  -  Y1
ASP程序调用验证码 
If   Abs (DX)  >   Abs (DY)  Then  DeltaT  =   Abs (DX)  Else  DeltaT  =   Abs (DY)
ASP程序调用验证码 
For  i  =   0   To  DeltaT
ASP程序调用验证码  CDGen_PSet X1 
+  DX  *  i  /  DeltaT, Y1  +  DY  *  i  /  DeltaT
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_FowardDraw(nLength)
ASP程序调用验证码 
'  按当前光笔方向绘制指定长度并移动光笔,正数表示从左向右/从上向下绘制,负数表示从右向左/从下向上绘制
ASP程序调用验证码
 nLength  =   Sgn (nLength)  *   Abs (nLength)  *  ( 1   -  nLengthRandom  /   100   +   Rnd   *  nLenghtRandom  *   2   /   100 )
ASP程序调用验证码 
ReDim  Preserve Lines( 3 , LineCount)
ASP程序调用验证码 Lines(
0 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
1 , LineCount)  =  CursorY
ASP程序调用验证码 CursorX 
=  CursorX  +  DirX  *  nLength
ASP程序调用验证码 CursorY 
=  CursorY  +  DirY  *  nLength
ASP程序调用验证码 Lines(
2 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
3 , LineCount)  =  CursorY
ASP程序调用验证码 LineCount 
=  LineCount  +   1
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_SetDirection(nAngle)
ASP程序调用验证码 
'  按指定角度设定画笔方向, 正数表示相对当前方向顺时针改变方向,负数表示相对当前方向逆时针改变方向
ASP程序调用验证码
  Dim  DX, DY
ASP程序调用验证码 
ASP程序调用验证码 nAngle 
=   Sgn (nAngle)  *  ( Abs (nAngle)  -  nAngleRandom  +   Rnd   *  nAngleRandom  *   2 /   180   *   3.1415926
ASP程序调用验证码 DX 
=  DirX
ASP程序调用验证码 DY 
=  DirY
ASP程序调用验证码 DirX 
=  DX  *   Cos (nAngle)  -  DY  *   Sin (nAngle)
ASP程序调用验证码 DirY 
=  DX  *   Sin (nAngle)  +  DY  *   Cos (nAngle)
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_MoveToMiddle(nActionIndex, nPercent)
ASP程序调用验证码 
'  将画笔光标移动到指定动作的中间点上,nPercent为中间位置的百分比
ASP程序调用验证码
  Dim  DeltaX, DeltaY
ASP程序调用验证码 
ASP程序调用验证码 DeltaX 
=  Lines( 2 , nActionIndex)  -  Lines( 0 , nActionIndex)
ASP程序调用验证码 DeltaY 
=  Lines( 3 , nActionIndex)  -  Lines( 1 , nActionIndex)
ASP程序调用验证码 CursorX 
=  Lines( 0 , nActionIndex)  +   Sgn (DeltaX)  *   Abs (DeltaX)  *  nPercent  /   100
ASP程序调用验证码 CursorY 
=  Lines( 1 , nActionIndex)  +   Sgn (DeltaY)  *   Abs (DeltaY)  *  nPercent  /   100
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_MoveCursor(nActionIndex)
ASP程序调用验证码 
'  将画笔光标移动到指定动作的起始点上
ASP程序调用验证码
 CursorX  =  Lines( 0 , nActionIndex)
ASP程序调用验证码 CursorY 
=  Lines( 1 , nActionIndex)
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Close(nActionIndex)
ASP程序调用验证码 
'  将当前光笔位置与指定动作的起始点闭合并移动光笔
ASP程序调用验证码
  ReDim  Preserve Lines( 3 , LineCount)
ASP程序调用验证码 Lines(
0 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
1 , LineCount)  =  CursorY
ASP程序调用验证码 CursorX 
=  Lines( 0 , nActionIndex)
ASP程序调用验证码 CursorY 
=  Lines( 1 , nActionIndex)
ASP程序调用验证码 Lines(
2 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
3 , LineCount)  =  CursorY
ASP程序调用验证码 LineCount 
=  LineCount  +   1
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_CloseToMiddle(nActionIndex, nPercent)
ASP程序调用验证码 
'  将当前光笔位置与指定动作的中间点闭合并移动光笔,nPercent为中间位置的百分比
ASP程序调用验证码
  Dim  DeltaX, DeltaY
ASP程序调用验证码 
ASP程序调用验证码 
ReDim  Preserve Lines( 3 , LineCount)
ASP程序调用验证码 Lines(
0 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
1 , LineCount)  =  CursorY
ASP程序调用验证码 DeltaX 
=  Lines( 2 , nActionIndex)  -  Lines( 0 , nActionIndex)
ASP程序调用验证码 DeltaY 
=  Lines( 3 , nActionIndex)  -  Lines( 1 , nActionIndex)
ASP程序调用验证码 CursorX 
=  Lines( 0 , nActionIndex)  +   Sgn (DeltaX)  *   Abs (DeltaX)  *  nPercent  /   100
ASP程序调用验证码 CursorY 
=  Lines( 1 , nActionIndex)  +   Sgn (DeltaY)  *   Abs (DeltaY)  *  nPercent  /   100
ASP程序调用验证码 Lines(
2 , LineCount)  =  CursorX
ASP程序调用验证码 Lines(
3 , LineCount)  =  CursorY
ASP程序调用验证码 LineCount 
=  LineCount  +   1
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Flush(X0, Y0)
ASP程序调用验证码 
'  按照当前的画笔动作序列绘制位图点阵
ASP程序调用验证码
  Dim  MaxX, MinX, MaxY, MinY
ASP程序调用验证码 
Dim  DeltaX, DeltaY, StepX, StepY, OffsetX, OffsetY
ASP程序调用验证码 
Dim  i
ASP程序调用验证码
ASP程序调用验证码 MaxX 
=  MinX  =  MaxY  =  MinY  =   0
ASP程序调用验证码 
For  i  =   0   To  LineCount  -   1
ASP程序调用验证码  
If  MaxX  <  Lines( 0 , i)  Then  MaxX  =  Lines( 0 , i)
ASP程序调用验证码  
If  MaxX  <  Lines( 2 , i)  Then  MaxX  =  Lines( 2 , i)
ASP程序调用验证码  
If  MinX  >  Lines( 0 , i)  Then  MinX  =  Lines( 0 , i)
ASP程序调用验证码  
If  MinX  >  Lines( 2 , i)  Then  MinX  =  Lines( 2 , i)
ASP程序调用验证码  
If  MaxY  <  Lines( 1 , i)  Then  MaxY  =  Lines( 1 , i)
ASP程序调用验证码  
If  MaxY  <  Lines( 3 , i)  Then  MaxY  =  Lines( 3 , i)
ASP程序调用验证码  
If  MinY  >  Lines( 1 , i)  Then  MinY  =  Lines( 1 , i)
ASP程序调用验证码  
If  MinY  >  Lines( 3 , i)  Then  MinY  =  Lines( 3 , i)
ASP程序调用验证码 
Next
ASP程序调用验证码 DeltaX 
=  MaxX  -  MinX
ASP程序调用验证码 DeltaY 
=  MaxY  -  MinY
ASP程序调用验证码 
If  DeltaX  =   0   Then  DeltaX  =   1
ASP程序调用验证码 
If  DeltaY  =   0   Then  DeltaY  =   1
ASP程序调用验证码 MaxX 
=  MinX
ASP程序调用验证码 MaxY 
=  MinY
ASP程序调用验证码 
If  DeltaX  >  DeltaY  Then
ASP程序调用验证码  StepX 
=  (nPixelWidth  -   2 /  DeltaX
ASP程序调用验证码  StepY 
=  (nPixelHeight  -   2 /  DeltaX
ASP程序调用验证码  OffsetX 
=   0
ASP程序调用验证码  OffsetY 
=  (DeltaX  -  DeltaY)  /   2
ASP程序调用验证码 
Else
ASP程序调用验证码  StepX 
=  (nPixelWidth  -   2 /  DeltaY
ASP程序调用验证码  StepY 
=  (nPixelHeight  -   2 /  DeltaY
ASP程序调用验证码  OffsetX 
=  (DeltaY  -  DeltaX)  /   2
ASP程序调用验证码  OffsetY 
=   0
ASP程序调用验证码 
End   If
ASP程序调用验证码 
For  i  =   0   To  LineCount  -   1
ASP程序调用验证码  Lines(
0 , i)  =   Round ((Lines( 0 , i)  -  MaxX  +  OffsetX)  *  StepX,  0 )
ASP程序调用验证码  
If  Lines( 0 , i)  <   0   Then  Lines( 0 , i)  =   0
ASP程序调用验证码  
If  Lines( 0 , i)  >=  nPixelWidth  -   2   Then  Lines( 0 , i)  =  nPixelWidth  -   3
ASP程序调用验证码  Lines(
1 , i)  =   Round ((Lines( 1 , i)  -  MaxY  +  OffsetY)  *  StepY,  0 )
ASP程序调用验证码  
If  Lines( 1 , i)  <   0   Then  Lines( 1 , i)  =   0
ASP程序调用验证码  
If  Lines( 1 , i)  >=  nPixelHeight  -   2   Then  Lines( 1 , i)  =  nPixelHeight  -   3
ASP程序调用验证码  Lines(
2 , i)  =   Round ((Lines( 2 , i)  -  MinX  +  OffsetX)  *  StepX,  0 )
ASP程序调用验证码  
If  Lines( 2 , i)  <   0   Then  Lines( 2 , i)  =   0
ASP程序调用验证码  
If  Lines( 2 , i)  >=  nPixelWidth  -   2   Then  Lines( 2 , i)  =  nPixelWidth  -   3
ASP程序调用验证码  Lines(
3 , i)  =   Round ((Lines( 3 , i)  -  MinY  +  OffsetY)  *  StepY,  0 )
ASP程序调用验证码  
If  Lines( 3 , i)  <   0   Then  Lines( 3 , i)  =   0
ASP程序调用验证码  
If  Lines( 3 , i)  >=  nPixelHeight  -   2   Then  Lines( 3 , i)  =  nPixelHeight  -   3
ASP程序调用验证码  CDGen_Line Lines(
0 , i)  +  X0  +   1 , Lines( 1 , i)  +  Y0  +   1 , Lines( 2 , i)  +  X0  +   1 , Lines( 3 , i)  +  Y0  +   1
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Char(cChar, X0, Y0)
ASP程序调用验证码 
'  在指定坐标处生成指定字符的位图阵列
ASP程序调用验证码
 CDGen_Reset
ASP程序调用验证码 
Select   Case  cChar
ASP程序调用验证码 
Case   " 0 "
ASP程序调用验证码  CDGen_SetDirection 
- 60                              '  逆时针60度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  1.5                                '  绘制1.5个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                                '  绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                                '  绘制0.7个单位
ASP程序调用验证码
  CDGen_Close  0                                       '  封闭当前笔与第0笔(0开始)
ASP程序调用验证码
  Case   " 1 "
ASP程序调用验证码  CDGen_SetDirection 
- 90                              '  逆时针90度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_MoveToMiddle  0 50                            '  移动画笔的位置到第0笔(0开始)的50%处
ASP程序调用验证码
  CDGen_SetDirection  90                               '  逆时针90度
ASP程序调用验证码
  CDGen_FowardDraw  - 1.4                               '  反方向绘制1.4个单位
ASP程序调用验证码
  CDGen_SetDirection  30                               '  逆时针30度
ASP程序调用验证码
  CDGen_FowardDraw  0.4                                '  绘制0.4个单位
ASP程序调用验证码
  Case   " 2 "
ASP程序调用验证码  CDGen_SetDirection 
45                               '  顺时针45度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 120                             '  逆时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.4                                '  绘制0.4个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.6                                '  绘制0.6个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  1.6                                '  绘制1.6个单位
ASP程序调用验证码
  CDGen_SetDirection  - 135                             '  逆时针135度
ASP程序调用验证码
  CDGen_FowardDraw  1.0                                '  绘制1.0个单位
ASP程序调用验证码
  Case   " 3 "
ASP程序调用验证码  CDGen_SetDirection 
- 90                              '  逆时针90度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  135                              '  顺时针135度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  - 120                             '  逆时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.6                                '  绘制0.6个单位
ASP程序调用验证码
  CDGen_SetDirection  80                               '  顺时针80度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  Case   " 4 "
ASP程序调用验证码  CDGen_SetDirection 
20                               '  顺时针20度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  - 110                             '  逆时针110度
ASP程序调用验证码
  CDGen_FowardDraw  1.2                                '  绘制1.2个单位
ASP程序调用验证码
  CDGen_MoveToMiddle  1 60                            '  移动画笔的位置到第1笔(0开始)的60%处
ASP程序调用验证码
  CDGen_SetDirection  90                               '  顺时针90度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                                '  绘制0.7个单位
ASP程序调用验证码
  CDGen_MoveCursor  2                                  '  移动画笔到第2笔(0开始)的开始处
ASP程序调用验证码
  CDGen_FowardDraw  - 1.5                               '  反方向绘制1.5个单位
ASP程序调用验证码
  Case   " 5 "
ASP程序调用验证码  CDGen_SetDirection 
90                               '  顺时针90度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  1.0                                '  绘制1.0个单位
ASP程序调用验证码
  CDGen_SetDirection  - 90                              '  逆时针90度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  - 90                              '  逆时针90度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  30                               '  顺时针30度
ASP程序调用验证码
  CDGen_FowardDraw  0.4                                '  绘制0.4个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.4                                '  绘制0.4个单位
ASP程序调用验证码
  CDGen_SetDirection  30                               '  顺时针30度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  Case   " 6 "
ASP程序调用验证码  CDGen_SetDirection 
- 60                              '  逆时针60度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  1.5                                '  绘制1.5个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                                '  绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_CloseToMiddle  2 50                           '  将当前画笔位置与第2笔(0开始)的50%处封闭
ASP程序调用验证码
  Case   " 7 "
ASP程序调用验证码  CDGen_SetDirection 
180                              '  顺时针180度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  0.3                                '  绘制0.3个单位
ASP程序调用验证码
  CDGen_SetDirection  90                               '  顺时针90度
ASP程序调用验证码
  CDGen_FowardDraw  0.9                                '  绘制0.9个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  1.3                                '  绘制1.3个单位
ASP程序调用验证码
  Case   " 8 "
ASP程序调用验证码  CDGen_SetDirection 
- 60                              '  逆时针60度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.8                               '  反方向绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.8                               '  反方向绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  110                              '  顺时针110度
ASP程序调用验证码
  CDGen_FowardDraw  - 1.5                               '  反方向绘制1.5个单位
ASP程序调用验证码
  CDGen_SetDirection  - 110                             '  逆时针110度
ASP程序调用验证码
  CDGen_FowardDraw  0.9                                '  绘制0.9个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.8                                '  绘制0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  60                               '  顺时针60度
ASP程序调用验证码
  CDGen_FowardDraw  0.9                                '  绘制0.9个单位
ASP程序调用验证码
  CDGen_SetDirection  70                               '  顺时针70度
ASP程序调用验证码
  CDGen_FowardDraw  1.5                               '  绘制1.5个单位
ASP程序调用验证码
  CDGen_Close  0                                       '  封闭当前笔与第0笔(0开始)
ASP程序调用验证码
  Case   " 9 "
ASP程序调用验证码  CDGen_SetDirection 
120                              '  逆时针60度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 1.5                                '  绘制1.5个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                                '  绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.5                                '  绘制0.5个单位
ASP程序调用验证码
  CDGen_CloseToMiddle  2 50                           '  将当前画笔位置与第2笔(0开始)的50%处封闭
ASP程序调用验证码
  '  以下为字母的矢量动作,有兴趣的可以继续
ASP程序调用验证码
  Case   " A "
ASP程序调用验证码  CDGen_SetDirection 
- ( Rnd   *   20   +   150 )               '  逆时针150-170度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.2   +   1.1                    '  绘制1.1-1.3个单位
ASP程序调用验证码
  CDGen_SetDirection  Rnd   *   20   +   140                   '  顺时针140-160度
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.2   +   1.1                    '  绘制1.1-1.3个单位
ASP程序调用验证码
  CDGen_MoveToMiddle  0 30                            '  移动画笔的位置到第1笔(0开始)的30%处
ASP程序调用验证码
  CDGen_CloseToMiddle  1 70                           '  将当前画笔位置与第1笔(0开始)的70%处封闭
ASP程序调用验证码
  Case   " B "
ASP程序调用验证码  CDGen_SetDirection 
- ( Rnd   *   20   +   50 )                '  逆时针50-70度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.4   +   0.8                    '  绘制0.8-1.2个单位
ASP程序调用验证码
  CDGen_SetDirection  Rnd   *   20   +   110                   '  顺时针110-130度
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.2   +   0.6                    '  绘制0.6-0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  - ( Rnd   *   20   +   110 )               '  逆时针110-130度
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.2   +   0.6                    '  绘制0.6-0.8个单位
ASP程序调用验证码
  CDGen_SetDirection  Rnd   *   20   +   110                   '  顺时针110-130度
ASP程序调用验证码
  CDGen_FowardDraw  Rnd   *   0.4   +   0.8                    '  绘制0.8-1.2个单位
ASP程序调用验证码
  CDGen_Close  0                                       '  封闭当前笔与第1笔(0开始)
ASP程序调用验证码
  Case   " C "
ASP程序调用验证码  CDGen_SetDirection 
- 60                              '  逆时针60度(相对于垂直线)
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  - 60                              '  逆时针60度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  1.5                                '  绘制1.5个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  - 0.7                               '  反方向绘制0.7个单位
ASP程序调用验证码
  CDGen_SetDirection  120                              '  顺时针120度
ASP程序调用验证码
  CDGen_FowardDraw  0.7                                '  绘制0.7个单位
ASP程序调用验证码
  End   Select
ASP程序调用验证码 CDGen_Flush X0, Y0
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_Blur()
ASP程序调用验证码 
'  对产生的位图进行柔化处理
ASP程序调用验证码
  Dim  i, j
ASP程序调用验证码 
ASP程序调用验证码 
For  j  =   1   To  nPixelHeight  -   2
ASP程序调用验证码  
For  i  =   1   To  nCharCount  *  nPixelWidth  -   2
ASP程序调用验证码   
If  Buf(j, i)  =   0   Then
ASP程序调用验证码    
If  ((Buf(j, i  -   1 Or  Buf(j  +   1 , i))  And   1 <>   0   Then
ASP程序调用验证码     
'  如果当前点是空白点,且上下左右四个点中有一个点是有色点,则该点做柔化处理
ASP程序调用验证码
     Buf(j, i)  =   2
ASP程序调用验证码    
End   If
ASP程序调用验证码   
End   If
ASP程序调用验证码  
Next
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen_NoisyDot()
ASP程序调用验证码 
'  对产生的位图进行噪点处理
ASP程序调用验证码
  Dim  i, j, NoisyDot, CurDot
ASP程序调用验证码 
ASP程序调用验证码 
For  j  =   0   To  nPixelHeight  -   1
ASP程序调用验证码  
For  i  =   0   To  nCharCount  *  nPixelWidth  -   1
ASP程序调用验证码   
If  Buf(j, i)  <>   0   Then
ASP程序调用验证码    NoisyDot 
=   Int ( Rnd   *   Rnd   *  nMaxSaturation)
ASP程序调用验证码    
Select   Case  nColorNoisyDotOdds
ASP程序调用验证码    
Case   0
ASP程序调用验证码     CurDot 
=  nMaxSaturation
ASP程序调用验证码    
Case   1
ASP程序调用验证码     CurDot 
=   0
ASP程序调用验证码    
Case   Else
ASP程序调用验证码     CurDot 
=  NoisyDot
ASP程序调用验证码    
End   Select
ASP程序调用验证码    
If   Rnd   <  nColorNoisyDotOdds  Then  Buf(j, i)  =  CurDot  Else  Buf(j, i)  =  nMaxSaturation
ASP程序调用验证码   
Else
ASP程序调用验证码    NoisyDot 
=   Int ( Rnd   *  nMaxSaturation)
ASP程序调用验证码    
Select   Case  nBlankNoisyDotOdds
ASP程序调用验证码    
Case   0
ASP程序调用验证码     CurDot 
=   0
ASP程序调用验证码    
Case   1
ASP程序调用验证码     CurDot 
=  nMaxSaturation
ASP程序调用验证码    
Case   Else
ASP程序调用验证码     CurDot 
=  NoisyDot
ASP程序调用验证码    
End   Select
ASP程序调用验证码    
If   Rnd   <  nBlankNoisyDotOdds  Then  Buf(j, i)  =  CurDot  Else  Buf(j, i)  =   0
ASP程序调用验证码   
End   If
ASP程序调用验证码  
Next
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Sub  CDGen()
ASP程序调用验证码 
'  生成位图阵列
ASP程序调用验证码
  Dim  i, Ch
ASP程序调用验证码 
ASP程序调用验证码 DigtalStr 
=   ""
ASP程序调用验证码 CDGen_Clear
ASP程序调用验证码 
For  i  =   0   To  nCharCount  -   1
ASP程序调用验证码  Ch 
=   Mid (cCharSet,  Int ( Rnd   *   Len (cCharSet))  +   1 1 )
ASP程序调用验证码  DigtalStr 
=  DigtalStr  +  Ch
ASP程序调用验证码  CDGen_Char Ch, i 
*  nPixelWidth,  0
ASP程序调用验证码 
Next
ASP程序调用验证码 CDGen_Blur
ASP程序调用验证码 CDGen_NoisyDot
ASP程序调用验证码
End Sub
ASP程序调用验证码
ASP程序调用验证码
Function  HSBToRGB(vH, vS, vB)
ASP程序调用验证码 
'  将颜色值由HSB转换为RGB
ASP程序调用验证码
  Dim  aRGB( 3 ), RGB1st, RGB2nd, RGB3rd
ASP程序调用验证码 
Dim  nH, nS, nB
ASP程序调用验证码 
Dim  lH, nF, nP, nQ, nT
ASP程序调用验证码
ASP程序调用验证码 vH 
=  (vH  Mod   360 )
ASP程序调用验证码 
If  vS  >   100   Then
ASP程序调用验证码  vS 
=   100
ASP程序调用验证码 
ElseIf  vS  <   0   Then
ASP程序调用验证码  vS 
=   0
ASP程序调用验证码 
End   If
ASP程序调用验证码 
If  vB  >   100   Then
ASP程序调用验证码  vB 
=   100
ASP程序调用验证码 
ElseIf  vB  <   0   Then
ASP程序调用验证码  vB 
=   0
ASP程序调用验证码 
End   If
ASP程序调用验证码 
If  vS  >   0   Then
ASP程序调用验证码  nH 
=  vH  /   60
ASP程序调用验证码  nS 
=  vS  /   100
ASP程序调用验证码  nB 
=  vB  /   100
ASP程序调用验证码  lH 
=   Int (nH)
ASP程序调用验证码  nF 
=  nH  -  lH
ASP程序调用验证码  nP 
=  nB  *  ( 1   -  nS)
ASP程序调用验证码  nQ 
=  nB  *  ( 1   -  nS  *  nF)
ASP程序调用验证码  nT 
=  nB  *  ( 1   -  nS  *  ( 1   -  nF))
ASP程序调用验证码  
Select   Case  lH
ASP程序调用验证码  
Case   0
ASP程序调用验证码   aRGB(
0 =  nB  *   255
ASP程序调用验证码   aRGB(
1 =  nT  *   255
ASP程序调用验证码   aRGB(
2 =  nP  *   255
ASP程序调用验证码  
Case   1
ASP程序调用验证码   aRGB(
0 =  nQ  *   255
ASP程序调用验证码   aRGB(
1 =  nB  *   255
ASP程序调用验证码   aRGB(
2 =  nP  *   255
ASP程序调用验证码  
Case   2
ASP程序调用验证码   aRGB(
0 =  nP  *   255
ASP程序调用验证码   aRGB(
1 =  nB  *   255   
ASP程序调用验证码   aRGB(
2 =  nT  *   255
ASP程序调用验证码  
Case   3
ASP程序调用验证码   aRGB(
0 =  nP  *   255
ASP程序调用验证码   aRGB(
1 =  nQ  *   255
ASP程序调用验证码   aRGB(
2 =  nB  *   255
ASP程序调用验证码  
Case   4
ASP程序调用验证码   aRGB(
0 =  nT  *   255
ASP程序调用验证码   aRGB(
1 =  nP  *   255
ASP程序调用验证码   aRGB(
2 =  nB  *   255
ASP程序调用验证码  
Case   5
ASP程序调用验证码   aRGB(
0 =  nB  *   255
ASP程序调用验证码   aRGB(
1 =  nP  *   255
ASP程序调用验证码   aRGB(
2 =  nQ  *   255
ASP程序调用验证码  
End   Select    
ASP程序调用验证码 
Else
ASP程序调用验证码  aRGB(
0 =  (vB  *   255 /   100
ASP程序调用验证码  aRGB(
1 =  aRGB( 0 )
ASP程序调用验证码  aRGB(
2 =  aRGB( 0 )
ASP程序调用验证码 
End   If
ASP程序调用验证码 HSBToRGB 
=  ChrB( Round (aRGB( 2 ),  0 ))  &  ChrB( Round (aRGB( 1 ),  0 ))  &  ChrB( Round (aRGB( 0 ),  0 ))
ASP程序调用验证码
End Function
ASP程序调用验证码
ASP程序调用验证码
Sub  CreatValidCode(pSN)
ASP程序调用验证码 
Dim  i, j, CurColorHue
ASP程序调用验证码 
ASP程序调用验证码 
'  禁止缓存
ASP程序调用验证码
 Response.Expires  =   - 9999
ASP程序调用验证码 Response.AddHeader 
" pragma " " no-cache "
ASP程序调用验证码 Response.AddHeader 
" cache-ctrol " " no-cache "
ASP程序调用验证码 Response.ContentType 
=   " image/bmp "
ASP程序调用验证码 
ASP程序调用验证码 
Call  CDGen
ASP程序调用验证码 Session(pSN) 
=  DigtalStr  ' 记录入Session
ASP程序调用验证码

ASP程序调用验证码 
Dim  PicWidth, PicHeight, FileSize, PicDataSize
ASP程序调用验证码 PicWidth 
=  nCharCount  *  nPixelWidth
ASP程序调用验证码 PicHeight 
=  nPixelHeight
ASP程序调用验证码 PicDataSize 
=  PicWidth  *  PicHeight  *   3
ASP程序调用验证码 FileSize 
=  PicDataSize  +   54
ASP程序调用验证码
ASP程序调用验证码 
'  输出BMP文件信息头
ASP程序调用验证码
 Response.BinaryWrite ChrB( 66 &  ChrB( 77 &  _
ASP程序调用验证码  ChrB(FileSize 
Mod   256 &  ChrB((FileSize  \   256 Mod   256 &  ChrB((FileSize  \   256   \   256 Mod   256 &  ChrB(FileSize  \   256   \   256   \   256 &  _
ASP程序调用验证码  ChrB(
0 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
54 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 )
ASP程序调用验证码
ASP程序调用验证码 
'  输出BMP位图信息头
ASP程序调用验证码
 Response.BinaryWrite ChrB( 40 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(PicWidth 
Mod   256 &  ChrB((PicWidth  \   256 Mod   256 &  ChrB((PicWidth  \   256   \   256 Mod   256 &  ChrB(PicWidth  \   256   \   256   \   256 &  _
ASP程序调用验证码  ChrB(PicHeight 
Mod   256 &  ChrB((PicHeight  \   256 Mod   256 &  ChrB((PicHeight  \   256   \   256 Mod   256 &  ChrB(PicHeight  \   256   \   256   \   256 &  _
ASP程序调用验证码  ChrB(
1 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
24 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
0 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(PicDataSize 
Mod   256 &  ChrB((PicDataSize  \   256 Mod   256 &  ChrB((PicDataSize  \   256   \   256 Mod   256 &  ChrB(PicDataSize  \   256   \   256   \   256 &  _
ASP程序调用验证码  ChrB(
18 &  ChrB( 11 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
18 &  ChrB( 11 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
0 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 &  _
ASP程序调用验证码  ChrB(
0 &  ChrB( 0 &  ChrB( 0 &  ChrB( 0 )
ASP程序调用验证码
ASP程序调用验证码 
'  逐点输出位图阵列
ASP程序调用验证码
  If  nColorHue  =   - 1   Then
ASP程序调用验证码  CurColorHue 
=   Int ( Rnd   *   360 )
ASP程序调用验证码 
ElseIf  nColorHue  =   - 2   Then
ASP程序调用验证码  CurColorHue 
=   0
ASP程序调用验证码 
Else
ASP程序调用验证码  CurColorHue 
=  nColorHue
ASP程序调用验证码 
End   If
ASP程序调用验证码 
For  j  =   0   To  nPixelHeight  -   1
ASP程序调用验证码  
For  i  =   0   To   Len (DigtalStr)  *  nPixelWidth  -   1
ASP程序调用验证码   
If  nColorHue  =   - 2   Then
ASP程序调用验证码    Response.BinaryWrite HSBToRGB(CurColorHue, 
0 100   -  Buf(nPixelHeight  -   1   -  j, i))
ASP程序调用验证码   
Else
ASP程序调用验证码    Response.BinaryWrite HSBToRGB(CurColorHue, Buf(nPixelHeight 
-   1   -  j, i),  100 )
ASP程序调用验证码   
End   If
ASP程序调用验证码  
Next
ASP程序调用验证码 
Next
ASP程序调用验证码
End Sub
ASP程序调用验证码%
>
ASP程序调用验证码
ASP程序调用验证码

你可能感兴趣的:(asp)