ASP mengimplementasikan pembuatan kode verifikasi bebas komponen dalam format GIF. Teman yang membutuhkan kode verifikasi asp dapat merujuknya. Copy kode kodenya sebagai berikut:
<%
Opsi Eksplisit ' Tampilkan deklarasi
Kelas Com_GifCode_Class
''''''''''''''''''''''''''''''''''''''
' Penulis: Layen [email protected] 84815733(QQ)
' Terima kasih: Laomi, Laomiao, NetRube
'2006-01-02
''''''''''''''''''''''''''''''''''''''
Kebisingan Umum, Hitungan, Lebar, Tinggi, Sudut, Offset, Perbatasan
Grafik Pribadi(), Margin(3)
Sub Kelas Pribadi_Inisialisasi()
Acak
Bising = 16' Kemungkinan terjadinya titik interferensi
Hitung = 4 'Jumlah karakter
Lebar = 80' lebar gambar
Tinggi = 20' tinggi gambar
Sudut = 2' Perubahan sudut secara acak
Offset = 20' Offset variasi acak
Batas = 1 'Ukuran batas
Akhiri Sub
Fungsi Publik Buat()
Konstanta cCharSet = 123456789
Redupkan i, x, y
Redupkan vValidCode : vValidCode =
Redupkan vIndex
Grafik ReDim (Lebar-1, Tinggi-1)
Untuk i = 0 Untuk Menghitung - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Pertengahan(cCharSet, vIndex+1, 1)
SetDraw vIndex, i
Berikutnya
Buat = vValidCode
Fungsi Akhir
Sub SetDot(pX, pY)
Jika pX * (Lebar-pX-1) >= 0 Dan pY * (Tinggi-pY-1) >= 0 Maka
Grafik(pX, pY) = 1
Akhiri Jika
Akhiri Sub
Sub SetDraw Publik (pIndex, pNumber)
'Data karakter
Redupkan DotData(8)
Data Titik(0) = Larik(30, 15, 50, 1, 50, 100)
Data Titik(1) = Array(1 ,34 ,30 ,1 ,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
Data Titik(2) = Larik(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
Data Titik(3) = Larik(100, 73, 6, 73, 75, 6, 75, 100)
Data Titik(4) = Array(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
DotData(5) = Array(100, 20, 70, 1, 20, 1, 1, 30, 1, 80, 30, 100, 70, 100, 100, 80, 100, 60, 70, 50, 30, 50 , 1, 60)
Data Titik(6) = Larik(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = Array(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) = Array(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50 , 100, 40)
Redupkan vExtent : vExtent = Lebar / Jumlah
Margin(0) = Batas + vExtent * (Rnd * Offset) / 100 + Margin(1)
Margin(1) = vExtent * (pNumber + 1) - Batas - vExtent * (Rnd * Offset) / 100
Margin(2) = Batas + Tinggi * (Rnd * Offset) / 100
Margin(3) = Tinggi - Batas - Tinggi * (Rnd * Offset) / 100
Redupkan vStartX, vEndX, vStartY, vEndY
Redupkan vLebar, vTinggi, vDX, vDY, vDeltaT
Redupkan vAngle, vLength
vLebar = Int(Margin(1) - Margin(0))
vTinggi = Int(Margin(3) - Margin(2))
'Mulai koordinat
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
Redupkan aku,j
Untuk i = 1 Ke UBound(DotData(pIndex), 1)/2
Jika DotData(pIndex)(2*i-2) <> 0 Dan DotData(pIndex)(2*i) <> 0 Maka
'Koordinat titik akhir
vEndX = (DotData(pIndex)(2*i)-1) * vLebar / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
'Kesenjangan horizontal
vDX = vEndX - vStartX
'Kesenjangan vertikal
vDY = vEndY - vStartY
'Sudut miring
Jika vDX = 0 Maka
vAngle = Sgn(vDY) * 3,14/2
Kalau tidak
vAngle = Atn(vDY / vDX)
Akhiri Jika
'Jarak antara dua koordinat
Jika Sin(vAngle) = 0 Maka
vPanjang = vDX
Kalau tidak
vPanjang = vDY / Sin(vAngle)
Akhiri Jika
' Sudut rotasi acak
vAngle = vAngle + (Rnd - 0,5) * 2 * Sudut * 3,14 * 2 / 100
vDX = Int(Cos(vAngle) * vPanjang)
vDY = Int(Dosa(vAngle) * vPanjang)
Jika Abs(vDX) > Abs(vDY) Maka vDeltaT = Abs(vDX) Lain vDeltaT = Abs(vDY)
Untuk j = 1 Ke vDeltaT
SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT
Berikutnya
vStartX = vStartX + vDX
vMulaiY = vMulaiY + vDY
Akhiri Jika
Berikutnya
Akhiri Sub
Sub Keluaran Publik()
Respon. Kedaluwarsa = -9999
Response.AddHeader pragma, tanpa cache
Response.AddHeader cache-ctrol, tanpa cache
Respon.ContentType = gambar/gif
'Jenis berkas
Respon.BinaryWrite ChrB(Asc(G)) & ChrB(Asc(I)) & ChrB(Asc(F))
'Informasi versi
Respon.BinaryWrite ChrB(Asc(8)) & ChrB(Asc(9)) & ChrB(Asc(a))
'Lebar layar logis
Response.BinaryWrite ChrB(Mod Lebar 256) & ChrB((Lebar/256) Mod 256)
'Ketinggian layar logis
Response.BinaryWrite ChrB(Mod Tinggi 256) & ChrB((Tinggi / 256) Mod 256)
Respon.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)
'Daftar warna global
Respon.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255)
Respon.BinaryWrite ChrB(0) & ChrB(85) & ChrB(255)
'Pengidentifikasi gambar
Respon.BinaryWrite ChrB(Asc(,))
Respon.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)
'Lebar gambar
Response.BinaryWrite ChrB(Mod Lebar 256) & ChrB((Lebar/256) Mod 256)
'Tinggi gambar
Response.BinaryWrite ChrB(Mod Tinggi 256) & ChrB((Tinggi / 256) Mod 256)
Respon.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255)
Redupkan x, y, i : i = 0
Untuk y = 0 Ke Tinggi - 1
Untuk x = 0 Sampai Lebar - 1
Jika Rnd < Bising / 100 Lalu
Respon.BinaryWrite ChrB(1-Graph(x, y))
Kalau tidak
Jika x * (x-Lebar) = 0 Atau y * (y-Tinggi) = 0 Maka
Respon.BinaryWrite ChrB(Grafik(x, y))
Kalau tidak
Jika Grafik(x-1, y) = 1 Atau Grafik(x, y) Atau Grafik(x, y-1) = 1 Maka
Respon.BinaryWrite ChrB(1)
Kalau tidak
Respon.BinaryWrite ChrB(0)
Akhiri Jika
Akhiri Jika
Akhiri Jika
Jika (y * Lebar + x + 1) Mod 126 = 0 Maka
Respon.BinaryWrite ChrB(128)
saya = saya + 1
Akhiri Jika
Jika (y * Lebar + x + i + 1) Mod 255 = 0 Maka
Jika (Lebar*Tinggi - y * Lebar - x - 1) > 255 Maka
Respon.BinaryWrite ChrB(255)
Kalau tidak
Response.BinaryWrite ChrB (Lebar * Tinggi Mod 255)
Akhiri Jika
Akhiri Jika
Berikutnya
Berikutnya
Respon.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
Akhiri Sub
Kelas Akhir
Redupkan mCode
Setel mCode = Com_GifCode_Class Baru
Sesi(GetCode) = mCode.Create()
mCode.Keluaran()
Setel mCode = Tidak Ada
%>