利用Adodb.Stream制作彩色验证码
利用 制作 验证码 stream 彩色 adodb
2023-06-13 09:13:41 时间
Asp文件:Code.Asp
数据文件:body.Fix , Head.Fix
用法:<img src="code.asp">
复制代码代码如下:
数据文件:body.Fix , Head.Fix
用法:<img src="code.asp">
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
Session("GetCode") = zNum
该for循环是将随机数字放入一个下标3的数组,便于提供给后面的阵列变换
dim zimg(3),NStr
NStr=cstr(zNum)
For i=0 to 3
zimg(i)=cint(mid(NStr,i+1,1))
Next
dim Pos
"定义二个 ADODB.Stream binary对象,作图像数据操作之用:
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
"载入0~9的数字数据10x100的,Gbr的阵列数据,每个320字节,10个数字3200byte
"BGR一个点,10x10个点一个数字,一个点三个字节(二进制8位,16进制 00~FF)
"一行10个点 30字节 + 行结束标记 00 00 二字节 32字节,所以一个10x100宽小于长的图像每个数字10x10是320字节
"长大于宽的则无行结束标记 0000,直接是300字节
这些就是BMP 24bit的数据详细信息了
‘至于头部,也很简单,包含长宽,图像开始标记等等~~才54字节,远没jpg什么的复杂
Ados.LoadFromFile(Server.mappath("body.Fix"))
Ados1.write Ados.read(1280)
"第一个for循环,按生成的随机数字顺序从 10X100的数字阵列中提取出相应的四个数字
但是竖排的数字阵列
for i=0 to 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
next
"清空已经用完的ADOS的数据,调入替换新的图像头54字节的头文件
Ados.LoadFromFile(Server.mappath("head.fix"))
Pos=lenb(Ados.read())
Ados.Position=Pos "指定Pos位置,即可再偏移54字节的位置添加图形数据
第二个for循环,进行数字的阵列变换,由竖排的块转换为横排的数字块
方法是隔320字节抽取4次30字节写入ados对象,再抽取偏移第二行的图像数据
30字节是因为bmp 宽大于长时无00 00的行结束标记
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
Ados.Position=0
response.BinaryWrite直接向客户端发送图像数据
Response.ContentType = "image/BMP"
Response.BinaryWrite Ados.read()
Ados.Close:set Ados=nothing
Ados1.Close:set Ados1=nothing
End Function
相关文章
- 预告:利用VLookup制作学生成绩报告书
- 利用PS Touch(免费) 制作一个透明背景图片
- 利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具
- 利用gvm管理go版本
- 利用PS曲线、插件、内置滤镜制作油画效PS全版本软件下载地址
- android利用jdk制作签名详解手机开发
- Linux启动盘快速制作:利用简易工具.(linux启动盘制作工具)
- 从Oracle移植数据:利用同步表(oracle同步表)
- 利用开放API接口制作QQ钱包/微信/支付宝等通用收款码
- 比较Linux:利用diff命令(linuxdiff)
- 利用U盘制作完美Linux系统(u盘linux制作工具)
- 利用Linux系统快速制作软件镜像(linux制作镜像)
- 制作利用Linux系统 快速制作光盘(linux系统光盘)
- 利用Oracle索引提高查询效率(oracle索引匹配)
- 利用 Redis 实现永不过期(redis设置永不过期)
- 利用Linux快速制作光盘(linux光盘制作)
- 看我如何利用漏洞窃取麦当劳网站注册用户密码
- 科学家展示利用镁在常温常压下使二氧化碳与水反应 形成甲烷/甲醇的方法
- 利用SQLserver构建与微信对接的小程序系统(sqlserver与微信)
- 异地双活利用Redis实现高可用存储(异地双活 redis)
- 保障系统安全利用Redis进行灾备(灾备redis)
- 的优势利用Redis构建Web应用,提升性能与效率(web应用中redis)
- 利用Redis构建高可用集群(redis集群架制作)
- 策略利用Redis实现惰性删除策略(redis 设置惰性删除)
- Css利用js的expression实现的效果
- 利用PHP制作简单的内容采集器的原理分析
- 利用JQuery动画制作滑动菜单项效果实现步骤及代码
- 利用js制作htmltable分页示例(js实现分页)