ASP generated Image Color check code

Source: Internet
Author: User

49 lines of code, three files

ASP File: code.asp

Data file: Body. Fix, Head.fix

Usage:

<%option explicitresponse.buffer=truenumcodefunction numcode () Response.Expires =-1 Response.AddHeader "PRAGM A "," 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=server.createobject ("ADODB.stream") ados1.mode=3 Ados1.typ E=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        sition=i*320 ados1.write Ados.read ($) 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 Next Next Response.ContentType = "Image/bmp" ados.position=0 Response.BinaryWrite ados.read () Ados.Close:set ados=nothing Ados1.Close:set ados1=nothingend functio N ' 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)
Next

' Empty the ADOs data to replace the new image header 54-byte header file

Ados.loadfromfile (Server.MapPath ("Head.fix"))
Pos=lenb (Ados.read ())
Ados.position=pos

' Specify POS location, and then offset 54-byte locations to add graphic data

The second for loop, a numeric array transformation, and a vertical block converted to a horizontal number block

The method is to extract 4 times 30 bytes of the ADOs object from 320 bytes, and then extract the image data from the second row.

30 bytes is due to BMP wide long no 00 00 Line end Tag

The following is a referenced content:
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
Next
Next
ados.position=0
Response. BinaryWrite sends image data directly to the client
Response.ContentType = "Image/bmp"
Response.BinaryWrite ados.read ()
Ados.close: Set ados=nothing
Ados1.Close:set ados1=nothing
End Function
 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.