ASP реализует бескомпонентную генерацию кодов проверки в формате GIF. Друзья, которым нужны коды проверки ASP, могут обратиться к нему. Скопируйте код кода следующим образом:
<%
Option Explicit 'Отображение объявления
Класс Com_GifCode_Class
'''''''''''''''''''''''''''''''''''''''
' Автор: Лайен [email protected] 84815733(QQ)
Спасибо: Laomi, Laomiao, NetRube.
'2006-01-02
'''''''''''''''''''''''''''''''''''''''
Общественный шум, количество, ширина, высота, угол, смещение, граница
Частный график(), Маржа(3)
Частный подкласс_Initialize()
Рандомизировать
Шумно = 16' Вероятность появления точки помех
Count = 4 'Количество символов
Ширина = 80 дюймов ширины изображения.
Высота = 20 дюймов высоты изображения.
Angle = 2' Случайное изменение угла
Смещение = 20 ' Случайное изменение смещения
Граница = 1 'Размер границы
Конец субтитра
Открытая функция Создать()
Конст cCharSet = 123456789
Тусклый я, х, у
Тусклый vValidCode : vValidCode =
Тусклый vIndex
График изменения размера (Ширина-1, Высота-1)
Для i = 0, чтобы считать - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex, я
Следующий
Создать = ввалидкоде
Конечная функция
Sub SetDot(pX, pY)
Если pX * (Ширина-pX-1) >= 0 И pY * (Высота-pY-1) >= 0 Тогда
Граф(pX, pY) = 1
Конец, если
Конец субтитра
Public Sub SetDraw (pIndex, pNumber)
'Данные персонажа
Тусклые DotData(8)
DotData(0) = Массив(30, 15, 50, 1, 50, 100)
DotData(1) = Массив(1,34,30,1,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
DotData(2) = Массив(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
DotData(3) = Массив(100, 73, 6, 73, 75, 6, 75, 100)
DotData(4) = Массив(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
DotData(5) = Массив(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) = Массив(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = Массив(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) = Массив(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 = Ширина/Количество
Маржа(0) = Граница + vExtent * (Rnd * Смещение) / 100 + Маржа(1)
Маржа(1) = vExtent * (pNumber + 1) — граница — vExtent * (Rnd * Offset) / 100
Поле(2) = Граница + Высота * (Ряд * Смещение) / 100
Поле(3) = Высота – Граница – Высота * (Rnd * Смещение) / 100
Тусклый vStartX, vEndX, vStartY, vEndY
Dim vWidth, vHeight, vDX, vDY, vDeltaT
Тусклый vAngle, vLength
vWidth = Int(Маржа(1) - Маржа(0))
vHeight = Int(Маржа(3) - Маржа(2))
'Начальные координаты
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
Дим я,дж
Для i = 1 To UBound(DotData(pIndex), 1)/2
Если DotData(pIndex)(2*i-2) <> 0 и DotData(pIndex)(2*i) <> 0 Тогда
'Координаты конечной точки
vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
«Горизонтальный разрыв
vDX = vEndX - vStartX
«Вертикальный разрыв
vDY = vEndY - vStartY
'Угол наклона
Если vDX = 0 Тогда
vAngle = Sgn(vDY) * 3,14/2
Еще
vAngle = Atn(vDY / vDX)
Конец, если
'Расстояние между двумя координатами
Если Sin(vAngle) = 0 Тогда
vLength = vDX
Еще
vLength = vDY / Sin(vAngle)
Конец, если
' Случайный угол поворота
vAngle = vAngle + (Rnd - 0,5) * 2 * Угол * 3,14 * 2/100
vDX = Int(Cos(vAngle) * vLength)
vDY = Int(Sin(vAngle) * vLength)
Если Abs(vDX) > Abs(vDY) Тогда vDeltaT = Abs(vDX) Иначе vDeltaT = Abs(vDY)
Для j = 1 To vDeltaT
SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT
Следующий
vStartX = vStartX + vDX
vStartY = vStartY + vDY
Конец, если
Следующий
Конец субтитра
Публичный дополнительный вывод()
Ответ.Истекает = -9999
Прагма Response.AddHeader, без кэша
Response.AddHeader управление кешем, без кеша
Response.ContentType = изображение/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)
Тусклый x, y, i: я = 0
Для y = 0 к высоте - 1
Для x = 0 по ширине - 1
Если Rnd < Шумно / 100 Тогда
Response.BinaryWrite ChrB(1-Graph(x, y))
Еще
Если x * (x-ширина) = 0 или y * (y-высота) = 0 Тогда
Response.BinaryWrite ChrB(График(x, y))
Еще
Если Graph(x-1, y) = 1 Или Graph(x, y) Или Graph(x, y-1) = 1 Тогда
Response.BinaryWrite ChrB(1)
Еще
Response.BinaryWrite ChrB(0)
Конец, если
Конец, если
Конец, если
Если (y * Ширина + x + 1) Mod 126 = 0 Тогда
Response.BinaryWrite ChrB(128)
я = я + 1
Конец, если
Если (y * Ширина + x + i + 1) Mod 255 = 0 Тогда
Если (Ширина*Высота - y * Ширина - x - 1) > 255 Тогда
Response.BinaryWrite ChrB(255)
Еще
Response.BinaryWrite ChrB (Ширина * Высота Mod 255)
Конец, если
Конец, если
Следующий
Следующий
Response.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
Конец субтитра
Конечный класс
Тусклый мкод
Установите mCode = Новый Com_GifCode_Class
Сеанс(GetCode) = mCode.Create()
мКод.Выход()
Установить mCode = Ничего
%>