Using ASP to generate a picture color check code
49 lines of code, three files
ASP File: code.asp
Data file: Body. Fix, Head.fix
Download: Download packaged files
Usage:
<%
Option Explicit
Response.buffer=true
Numcode
Function Numcode ()
Response.Expires =-1
Response.AddHeader "Pragma", "No-cache"
Response.AddHeader "Cache-ctrol", "No-cache"
Dim znum,i,j
Dim ados,ados1
Randomize Timer
Znum = CInt (8999*rnd+1000)
Session ("GetCode") = Znum
Dim zimg (4), NSTR
Nstr=cstr (Znum)
For I=0 to 3
Zimg (i) =cint (Mid (nstr,i+1,1))
Next
Dim Pos
Set Ados=server.createobject ("ADODB.stream")
Ados.mode=3
Ados.type=1
Ados.open
Set Ados1=nt color= #0000bb >server.createobject ("ADODB.stream")
Ados1.mode=3
Ados1.type=1
Ados1.open
Ados.loadfromfile (Server.MapPath) ("body." Fix "))
Ados1.write Ados.read (1280)
For I=0 to 3
ados.position= (9-zimg (i)) *320
ados1.position=i*320
Ados1.write Ados.read (320)
Next
Ados.loadfromfile (Server.MapPath ("Head.fix"))
Pos=lenb (Ados.read ())
Ados.position=pos
For i=0 to 9 Step 1
For J=0 to 3
ados1.position=i*32>+j*320
ados.position=pos+30*j+i*120
Ados.write Ados1.read (30)
Next
Next
Response.ContentType = "Image/bmp"
Ados.position=0
Response.BinaryWrite Ados.read ()
Ados.Close:set ados=nothing
Ados1.Close:set ados1=nothing
End Function
' Asp code Created by blueidea.com Web team V37 2003-7-25
%>
Code Explanation:
Response.buffer=true
Numcode
Function Numcode ()
response.expires =-1
response.addheader "Pragma", "No-cache"
response.addheader "Cache-ctrol", "No-cache"
dim Znum,i,j
dim ADOS,ADOS1
randomize Timer
Generate a random four-digit number:
znum = CInt (8999*rnd+1000)
Pass to session
session ("getcode") = Znum
The For loop is an array of random numbers placed in a subscript 3 to facilitate subsequent array transformations
dim zimg (3), NSTR
nstr=cstr (Znum)
for i=0 to 3
zimg (i) =cint (Mid (nstr,i+1,1))
next
dim Pos
' Define two ADODB. Stream binary object for image data manipulation:
set ados=server.createobject ("ADODB.stream")
ados.mode=3
ados.type=1
ados.open
set ados1=server.createobject ("ADODB.stream")
ados1.mode=3
ados1.type=1
ados1.open
' Load 0~9 digital data 10x100, GBR array data, each 320 byte, 10 digits 3200byte
' BGR a point, 10x10 a number, a point three bytes (binary 8-bit, 16-system 00~FF)
' Line 10 points 30 bytes + Line end tag 00 2 bytes 32 bytes, so a 10x100 width is less than long image each digit 10x10 is 320 bytes
' The No Line end tag 0000, directly 300 bytes.
These are the BMP 24bit data details.
' As for the head, also very simple, contains the long width, the image starts the mark and so on ~ ~ Only 54 bytes, far does not have JPG what the complex
ados.loadfromfile (Server.MapPath) ("body." Fix "))
ados1.write Ados.read (1280)
' The first for loop, which extracts the corresponding four digits from the 10x100 digital array by the generated random number sequence
But vertical arrays of numbers
for i=0 to 3
ados.position= (9-zimg (i)) *320
ados1.position=i*320
ados1.write Ados.read (320)