ASP implémente un code de vérification du format GIF sans composant, les amis qui ont besoin de code de vérification ASP peuvent y faire référence.
<%
Instruction Affichage explicite de l'option
Classe com_gifcode_class
Public bruyant, comptage, largeur, hauteur, angle, décalage, bordure
Graphique privé (), marge (3)
Private Sub class_Initialize ()
Randomiser
Bruyant = 16 'La probabilité du point d'interférence apparaît
Count = 4 'Quantité de caractères
Largeur = 80 'Largeur d'image
Hauteur = 20 'hauteur d'image
Angle = 2 'Changement aléatoire annoncé
Offset = 20 'modifications aléatoires de décalage
Bordure = 1 'taille de cadre
Sub-Sub
Fonction publique Create ()
Const Charset = 123456789
Dim i, x, y
Dim vValidCode: vValidCode =
Vindex faible
Graphique Redim (largeur-1, hauteur-1)
Pour i = 0 pour compter -1
Vindex = int (rnd * len (cCharset))
vValidCode = vValidCode + mid (cCharset, videx + 1, 1)
SetDraw Vindex, je
Suivant
Créer = vvalidcode
Fonction finale
Sub SetDot (PX, PY)
Si px * (width-px-1)> = 0 et py * (height-py-1)> = 0 alors
Graphique (px, py) = 1
Terminer si
Sub-Sub
Public Sub SetDraw (Pindex, PNumber)
'Données de caractère
Dim dotdata (8)
Dotdata (0) = tableau (30, 15, 50, 1, 50, 100)
Dotdata (1) = tableau (1, 34, 30, 1, 71, 1, 100, 34, 1, 100, 93, 100, 86)
Dotdata (2) = tableau (1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
Dotdata (3) = tableau (100, 73, 6, 73, 75, 6, 75, 100)
Dotdata (4) = tableau (100, 1, 1, 1, 1, 50, 50, 35, 55, 100, 80, 50, 100, 1, 95)
Dotdata (5) = tableau (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) = tableau (6, 26, 6, 6, 100, 6, 53, 100)
Dotdata (7) = tableau (100, 30, 100, 20, 70, 1, 30, 1, 1, 20, 30, 70, 80, 70, 100, 30, 100, 80, 80, 1, 70, 100 , 30)
Dotdata (8) = tableau (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 VERTENT: VEXTENT = Largeur / Count
Marge (0) = bordure + Vextent * (rnd * décalage) / 100 + marge (1)
Marge (1) = Vextent * (pNumber + 1) -borter -vextent * (rnd * offset) / 100
Marge (2) = bordure + hauteur * (rnd * offset) / 100
Marge (3) = hauteur -borter -Height * (rnd * offset) / 100
Dim Vstartx, Vendx, Vstarty, Vendy
DIM VWIDTH, VDX, VDX, VDY, VDELTAT
VANGE DIM, VLENNIG
VWidth = int (marge (1) -margin (0))
vheight = int (marge (3) -margin (2))
'Démarrer les coordonnées
vStartx = int ((dotdata (Pindex) (0) -1) * VWidth / 100)
vStarty = int
Dim i, j
Pour i = 1 à Ubound (dotdata (Pindex), 1) / 2
Si dotdata (Pindex) (2 * i-2) <> 0 et dotdata (Pindex) (2 * i) <> 0 alors
`` Les coordonnées du point final
Vendx = (dotdata (Pindex) (2 * i) -1) * VWidth / 100
Vendy = (dotData (Pindex) (2 * i + 1) -1) * Vheight / 100
'Écart horizontal
vdx = Vendx -vStartx
'Écart vertical
vdy = vendy -vstarty
'Angle d'inclinaison
Si vdx = 0 alors
vangle = sgn (vdy) * 3.14 / 2
Autre
vangle = atn (vdy / vdx)
Terminer si
'Deux coordonnées distance
Si sin (vangle) = 0 alors
vLength = vdx
Autre
vLength = vdy / sin (vangle)
Terminer si
'Angle de rotation aléatoire
Vangle = vangl + (rnd -0,5) * 2 * angle * 3.14 * 2/100
vdx = int (cos (VANGLE) * vlength)
vdy = int (sin (vangl) * vLength)
Si ABS (VDX)> ABS (VDY) alors vdeltat = ABS (VDX) else vdeltat = ABS (VDY)
Pour j = 1 à vdeltat
Marge setDOT (0) + vstartx + j * vdx / vdeltat, marge (2) + vstarty + j * vdeltatat
Suivant
vStartx = vStartx + vdx
vStarty = Vstarty + Vdy
Terminer si
Suivant
Sub-Sub
Sous-sortie publique ()
Response.expires = -9999
Réponse.addheader pragma, sans cache
Response.Adheader Cache-Clm, sans cache
Response.ContentType = Image / GIF
'Type de fichier
Réponse.binarywrite chrb (asc (g)) & chrb (asc (i)) & chrb (asc (f))
'Informations sur la version
Réponse.binarywrite chrb (ASC (8)) & chrb (ASC (9)) & chrb (ASC (a))
'Largeur de l'écran logique
Réponse.binarywrite chrb (largeur mod 256) & chrb ((largeur / 256) mod 256)
'Hauteur de l'écran logique
Réponse.binarywrite chrb (height mod 256) & chrb (hauteur / 256 mod 256)
Réponse.binarywrite chrb (128) & chrb (0) & chrb (0)
'Liste des couleurs globales
Réponse.binarywrite chrb (255) & chrb (255) & chrb (255)
Réponse.binarywrite chrb (0) & chrb (85) & chrb (255)
'Identification d'image
Réponse.binarywrite chrb (asc (,,))
Réponse.binarywrite chrb (0) & chrb (0) & chrb (0) & chrb (0)
'Largeur d'image
Réponse.binarywrite chrb (largeur mod 256) & chrb ((largeur / 256) mod 256)
'Image élevée
Réponse.binarywrite chrb (height mod 256) & chrb (hauteur / 256 mod 256)
Réponse.binarywrite chrb (0) & chrb (7) & chrb (255)
Dim x, y, i: i = 0
Pour y = 0 à la hauteur -1
Pour x = 0 à la largeur -1
Si rnd <broisé / 100 alors
Réponse.binarywrite chrb (1-graph (x, y))
Autre
Si x * (x-large) = 0 ou y * (y-height) = 0 alors
Réponse.binarywrite chrb (graphique (x, y))
Autre
Si graphique (x-1, y) = 1 ou graphique (x, y) ou graphique (x, y-1) = 1 alors
Réponse.binarywrite chrb (1)
Autre
Réponse.binarywrite chrb (0)
Terminer si
Terminer si
Terminer si
If (y * largeur + x + 1) mod 126 = 0 alors
Réponse.binarywrite chrb (128)
I = i + 1
Terminer si
If (y * largeur + x + i + 1) mod 255 = 0 alors
If (largeur * hauteur -y * largeur -x -1)> 255 alors
Réponse.binarywrite chrb (255)
Autre
Réponse.binarywrite chrb (largeur * hauteur mod 255)
Terminer si
Terminer si
Suivant
Suivant
Réponse.binarywrite chrb (128) & chrb (0) & chrb (129) & chrb (0) & chrb (59)
Sub-Sub
Classe finale
Dalm
Définir MCODE = NOUVEAU COM_GIFCODE_CLASS
Session (getCode) = McOde.Create ()
McODE.Output ()
Set McOde = Rien
%>