ASP implementa la generación de códigos de verificación sin componentes en formato GIF. Los amigos que necesiten códigos de verificación ASP pueden consultarlo. Copie el código de código de la siguiente manera:
<%
Opción explícita 'Mostrar declaración
Clase Com_GifCode_Class
'''''''''''''''''''''''''''''''''''
' Autor: Layen [email protected] 84815733(QQ)
' Gracias: Laomi, Laomiao, NetRube
'2006-01-02
'''''''''''''''''''''''''''''''''''
Público ruidoso, recuento, ancho, alto, ángulo, desplazamiento, borde
Gráfico privado(), Margen(3)
Subclase privada_Initialize()
Aleatorizar
Ruidoso = 16 ' Probabilidad de aparición del punto de interferencia
Recuento = 4 'Número de caracteres
Ancho = 80 'ancho de imagen
Altura = 20' altura de la imagen
Ángulo = 2 ' Cambio aleatorio en el ángulo
Desplazamiento = 20 ' Variación aleatoria de desplazamiento
Borde = 1 'Tamaño del borde
Subtítulo final
Función pública Crear()
Const cCharSet = 123456789
Atenuar i, x, y
Dim vValidCode: vValidCode =
Índice v tenue
ReDim Gráfico (Ancho-1, Alto-1)
Para i = 0 Para contar - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex, yo
Próximo
Crear = vValidCode
Función final
SubconjuntoPunto(pX, pY)
Si pX * (Ancho-pX-1) >= 0 Y pY * (Alto-pY-1) >= 0 Entonces
Gráfica(pX, pY) = 1
Terminar si
Subtítulo final
Subconjunto públicoDraw(pIndex, pNumber)
'Datos del personaje
Datos de puntos tenues(8)
DotData(0) = Matriz(30, 15, 50, 1, 50, 100)
DotData(1) = Matriz(1, 34, 30, 1, 71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
DotData(2) = Matriz(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
DotData(3) = Matriz(100, 73, 6, 73, 75, 6, 75, 100)
DotData(4) = Matriz(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
DotData(5) = Matriz(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) = Matriz(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = Matriz(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) = Matriz(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 = Ancho / Recuento
Margen(0) = Borde + vExtensión * (Rnd * Desplazamiento) / 100 + Margen(1)
Margen(1) = vExtent * (pNumber + 1) - Borde - vExtent * (Rnd * Offset) / 100
Margen(2) = Borde + Alto * (Rnd * Desplazamiento) / 100
Margen(3) = Alto - Borde - Alto * (Rnd * Offset) / 100
Atenuar vStartX, vEndX, vStartY, vEndY
Atenuar vWidth, vHeight, vDX, vDY, vDeltaT
Ángulo v tenue, longitud v
vAncho = Int(Margen(1) - Margen(0))
vHeight = Int(Margen(3) - Margen(2))
'Coordenadas iniciales
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
tenue i,j
Para i = 1 a UBound(DotData(pIndex), 1)/2
Si DotData(pIndex)(2*i-2) <> 0 y DotData(pIndex)(2*i) <> 0 Entonces
'Coordenadas del punto final
vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vAltura / 100
'Brecha horizontal
vDX = vEndX - vInicioX
'Brecha vertical
vDY = vEndY - vInicioY
'Ángulo de inclinación
Si vDX = 0 Entonces
Ángulo v = Sgn(vDY) * 3,14/2
Demás
Ángulo v = Atn(vDY / vDX)
Terminar si
'Distancia entre dos coordenadas
Si Sin(vAngle) = 0 Entonces
vLongitud = vDX
Demás
vLongitud = vDY / Sin(vAngle)
Terminar si
' Ángulo de rotación aleatorio
Ángulo v = Ángulo v + (Rnd - 0,5) * 2 * Ángulo * 3,14 * 2/100
vDX = Int(Cos(vÁngulo) * vLongitud)
vDY = Int(Sin(vÁngulo) * vLongitud)
Si Abs(vDX) > Abs(vDY) Entonces vDeltaT = Abs(vDX) En caso contrario, vDeltaT = Abs(vDY)
Para j = 1 a vDeltaT
SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margen(2) + vStartY + j * vDY / vDeltaT
Próximo
vInicioX = vInicioX + vDX
vInicioY = vInicioY + vDY
Terminar si
Próximo
Subtítulo final
Subsalida pública()
Respuesta.Expira = -9999
Response.AddHeader pragma, sin caché
Response.AddHeader control de caché, sin caché
Respuesta.ContentType = imagen/gif
'Tipo de archivo
Respuesta.BinaryWrite ChrB(Asc(G)) & ChrB(Asc(I)) & ChrB(Asc(F))
'Información de versión
Respuesta.BinaryWrite ChrB(Asc(8)) & ChrB(Asc(9)) & ChrB(Asc(a))
'Ancho de pantalla lógica
Response.BinaryWrite ChrB (Ancho Mod 256) y ChrB ((Ancho / 256) Mod 256)
'Altura lógica de la pantalla
Response.BinaryWrite ChrB (Altura Mod 256) y ChrB ((Altura / 256) Mod 256)
Respuesta.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)
'Lista global de colores
Respuesta.BinaryWrite ChrB(255) y ChrB(255) y ChrB(255)
Respuesta.BinaryWrite ChrB(0) y ChrB(85) y ChrB(255)
'Identificador de imagen
Respuesta.BinaryWrite ChrB(Asc(,))
Respuesta.BinaryWrite ChrB(0) y ChrB(0) y ChrB(0) y ChrB(0)
'Ancho de imagen
Response.BinaryWrite ChrB (Ancho Mod 256) y ChrB ((Ancho / 256) Mod 256)
'Altura de la imagen
Response.BinaryWrite ChrB (Altura Mod 256) y ChrB ((Altura / 256) Mod 256)
Respuesta.BinaryWrite ChrB(0) y ChrB(7) y ChrB(255)
Dim x, y, i: i = 0
Para y = 0 A altura - 1
Para x = 0 A Ancho - 1
Si Rnd <Ruidoso / 100 Entonces
Respuesta.BinaryWrite ChrB(1-Graph(x, y))
Demás
Si x * (x-Ancho) = 0 O y * (y-Alto) = 0 Entonces
Respuesta.BinaryWrite ChrB(Graph(x, y))
Demás
Si Graph(x-1, y) = 1 O Graph(x, y) O Graph(x, y-1) = 1 Entonces
Respuesta.BinaryWrite ChrB(1)
Demás
Respuesta.BinaryWrite ChrB(0)
Terminar si
Terminar si
Terminar si
Si (y * Ancho + x + 1) Mod 126 = 0 Entonces
Respuesta.BinaryWrite ChrB(128)
yo = yo + 1
Terminar si
Si (y * Ancho + x + i + 1) Mod 255 = 0 Entonces
Si (Ancho*Alto - y * Ancho - x - 1) > 255 Entonces
Respuesta.BinaryWrite ChrB(255)
Demás
Response.BinaryWrite ChrB(Ancho * Alto Mod 255)
Terminar si
Terminar si
Próximo
Próximo
Respuesta.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
Subtítulo final
Fin de clase
Código m atenuado
Establecer mCode = Nuevo Com_GifCode_Class
Sesión(GetCode) = mCode.Create()
mCode.Salida()
Establecer mCode = Nada
%>