ASP implementa geração de códigos de verificação sem componentes no formato GIF. Amigos que precisam de códigos de verificação asp podem consultá-lo. Copie o código do código da seguinte forma:
<%
Opção Explícita 'Exibir declaração
Classe Com_GifCode_Class
'''''''''''''''''''''''''''''''''''''
' Autor: Layen [email protected] 84815733 (QQ)
' Obrigado: Laomi, Laomiao, NetRube
'2006-01-02
'''''''''''''''''''''''''''''''''''''
Ruído público, contagem, largura, altura, ângulo, deslocamento, borda
Gráfico Privado(), Margem(3)
Subclasse Privada_Initialize()
Randomizar
Ruído = 16 ' Probabilidade de ocorrência do ponto de interferência
Contagem = 4 'Número de caracteres
Largura = 80 'largura da imagem
Altura = 20 'altura da imagem
Ângulo = 2 ' Mudança aleatória no ângulo
Offset = 20 ' Variação aleatória de deslocamento
Borda = 1 'Tamanho da borda
Finalizar sub
Função Pública Criar()
Const cCharSet = 123456789
Diminuir eu, x, y
Dim vValidCode : vValidCode =
Escurecer vIndex
Gráfico ReDim (Largura-1, Altura-1)
Para i = 0 para contar - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex, eu
Próximo
Criar = vValidCode
Função final
SubSetDot(pX, pY)
Se pX * (Largura-pX-1) >= 0 E pY * (Altura-pY-1) >= 0 Então
Gráfico (pX, pY) = 1
Terminar se
Finalizar sub
Sub SetDraw público (pIndex, pNumber)
'Dados do personagem
Dim DotData(8)
PontoDados(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)
PontoDados(2) = Matriz(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
PontoDados(3) = Matriz(100, 73, 6, 73, 75, 6, 75, 100)
PontoDados(4) = Matriz(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
PontoDados(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)
PontoDados(6) = Matriz(6, 26, 6, 6, 100, 6, 53, 100)
PontoDados(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)
PontoDados(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 = Largura/Contagem
Margem(0) = Borda + vExtent * (Rnd * Deslocamento) / 100 + Margem(1)
Margem(1) = vExtent * (pNumber + 1) - Borda - vExtent * (Rnd * Offset) / 100
Margem(2) = Borda + Altura * (Rnd * Offset) / 100
Margem(3) = Altura - Borda - Altura * (Rnd * Offset) / 100
Diminuir vStartX, vEndX, vStartY, vEndY
Dim vWidth, vHeight, vDX, vDY, vDeltaT
Dim vAngle, vLength
vLargura = Int(Margem(1) - Margem(0))
vAltura = Int(Margem(3) - Margem(2))
'Coordenadas iniciais
vStartX = Int((DotData(pIndex)(0)-1) * vLargura / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
Dim eu,j
Para i = 1 Para UBound(DotData(pIndex), 1)/2
Se DotData(pIndex)(2*i-2) <> 0 E DotData(pIndex)(2*i) <> 0 Então
'Coordenadas do ponto final
vEndX = (DotData(pIndex)(2*i)-1) * vLargura / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vAltura / 100
'Lacuna horizontal
vDX = vEndX - vStartX
'Lacuna vertical
vDY = vEndY - vStartY
'Ângulo de inclinação
Se vDX = 0 Então
vÂngulo = Sgn(vDY) * 3,14/2
Outro
vÂngulo = Atn(vDY / vDX)
Terminar se
'Distância entre duas coordenadas
Se Sin(vÂngulo) = 0 Então
vComprimento = vDX
Outro
vComprimento = vDY / Sin(vÂngulo)
Terminar se
' Ângulo de rotação aleatório
vÂngulo = vÂngulo + (Rnd - 0,5) * 2 * Ângulo * 3,14 * 2/100
vDX = Int(Cos(vÂngulo) * vComprimento)
vDY = Int(Sin(vÂngulo) * vComprimento)
Se Abs(vDX) > Abs(vDY) Então vDeltaT = Abs(vDX) Caso contrário, vDeltaT = Abs(vDY)
Para j = 1 Para vDeltaT
Margem SetDot(0) + vStartX + j * vDX / vDeltaT, Margem(2) + vStartY + j * vDY / vDeltaT
Próximo
vIniciarX = vIniciarX + vDX
vInícioY = vInícioY + vDY
Terminar se
Próximo
Finalizar sub
Subsaída pública()
Resposta.Expira = -9999
Pragma Response.AddHeader, sem cache
Response.AddHeader cache-ctrol, sem cache
Response.ContentType = imagem/gif
'Tipo de arquivo
Response.BinaryWrite ChrB(Asc(G)) & ChrB(Asc(I)) & ChrB(Asc(F))
'Informações da versão
Response.BinaryWrite ChrB(Asc(8)) & ChrB(Asc(9)) & ChrB(Asc(a))
'Largura lógica da tela
Response.BinaryWrite ChrB (Largura Mod 256) e ChrB ((Largura / 256) Mod 256)
'Altura lógica da tela
Response.BinaryWrite ChrB (Altura Mod 256) e ChrB ((Altura / 256) Mod 256)
Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)
'Lista global de cores
Response.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255)
Response.BinaryWrite ChrB(0) & ChrB(85) & ChrB(255)
'Identificador de imagem
Response.BinaryWrite ChrB(Asc(,))
Response.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)
'Largura da imagem
Response.BinaryWrite ChrB (Largura Mod 256) e ChrB ((Largura / 256) Mod 256)
'Altura da imagem
Response.BinaryWrite ChrB (Altura Mod 256) e ChrB ((Altura / 256) Mod 256)
Response.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255)
Dim x, y, eu: eu = 0
Para y = 0 Para Altura - 1
Para x = 0 para largura - 1
Se Rnd < Barulhento / 100 Então
Response.BinaryWrite ChrB(1-Graph(x, y))
Outro
Se x * (x-Largura) = 0 Ou y * (y-Altura) = 0 Então
Response.BinaryWrite ChrB(Gráfico(x, y))
Outro
Se Gráfico (x-1, y) = 1 Ou Gráfico (x, y) Ou Gráfico (x, y-1) = 1 Então
Resposta.BinaryWrite ChrB(1)
Outro
Resposta.BinaryWrite ChrB(0)
Terminar se
Terminar se
Terminar se
Se (y * Largura + x + 1) Mod 126 = 0 Então
Resposta.BinaryWrite ChrB(128)
eu = eu + 1
Terminar se
Se (y * Largura + x + i + 1) Mod 255 = 0 Então
Se (Largura*Altura - y * Largura - x - 1) > 255 Então
Resposta.BinaryWrite ChrB(255)
Outro
Response.BinaryWrite ChrB (Largura * Altura Mod 255)
Terminar se
Terminar se
Próximo
Próximo
Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
Finalizar sub
Fim da aula
Escurecer mCode
Definir mCode = Novo Com_GifCode_Class
Sessão(GetCode) = mCode.Create()
mCode.Saída()
Definir mCode = Nada
%>