分享
 
 
 

用ASP生成XBM数字图片(可用来生成验证码)

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

XBM图片是一个纯文本的文件,可以用ASP来自动生成。可以用它来使用网站登陆的验证码;

我们用记事本打开该文件进行分析:

其文件结构为:

#define counter_width 48

#define counter_height 9

static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}

文件扩展名为:.xbm

#define counter_width 48 '这儿定义的是图片的宽度,一般为8的倍数

#define counter_height 9 '这儿定义的是图片的高度,是任意的。

static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c} '这儿是图片用来显示内容的十六进制的代码

正如static unsigned char英文意思为静态的,无符号的,烧焦的。它只能用来显示黑白两种颜色。二进制中的1将来用显示为黑色,0为白色。

下面为0~9数字的二进制数组(其中的图片样式仅试用于本例。如果需要别的0~9数字样式,请另自行生成)

'此处声明0~9绘图用数组

dim num(9,8)

'数字0

num(0,0)="0x38"

num(0,1)="0x7c"

num(0,2)="0xee"

num(0,3)="0xee"

num(0,4)="0xee"

num(0,5)="0xee"

num(0,6)="0xee"

num(0,7)="0x7c"

num(0,8)="0x38"

'数字1

num(1,0)="0x70"

num(1,1)="0x78"

num(1,2)="0x7c"

num(1,3)="0x74"

num(1,4)="0x70"

num(1,5)="0x70"

num(1,6)="0x70"

num(1,7)="0x70"

num(1,8)="0x70"

'数字2

num(2,0)="0x7c"

num(2,1)="0xfe"

num(2,2)="0xee"

num(2,3)="0xe0"

num(2,4)="0x70"

num(2,5)="0x38"

num(2,6)="0x1c"

num(2,7)="0xfe"

num(2,8)="0xfe"

'数字3

num(3,0)="0x7c"

num(3,1)="0xfe"

num(3,2)="0xee"

num(3,3)="0x60"

num(3,4)="0x30"

num(3,5)="0xe0"

num(3,6)="0xee"

num(3,7)="0xfe"

num(3,8)="0x7c"

'数字4

num(4,0)="0x70"

num(4,1)="0x78"

num(4,2)="0x7c"

num(4,3)="0x76"

num(4,4)="0x77"

num(4,5)="0xff"

num(4,6)="0xff"

num(4,7)="0x70"

num(4,8)="0x70"

'数字5

num(5,0)="0xfc"

num(5,1)="0xfc"

num(5,2)="0x0c"

num(5,3)="0x7e"

num(5,4)="0xfe"

num(5,5)="0xe0"

num(5,6)="0xee"

num(5,7)="0xfe"

num(5,8)="0x7c"

'数字6

num(6,0)="0x78"

num(6,1)="0xfc"

num(6,2)="0x0e"

num(6,3)="0x6e"

num(6,4)="0xfe"

num(6,5)="0xee"

num(6,6)="0xee"

num(6,7)="0xfc"

num(6,8)="0x78"

'数字7

num(7,0)="0xfe"

num(7,1)="0xfe"

num(7,2)="0x60"

num(7,3)="0x70"

num(7,4)="0x38"

num(7,5)="0x38"

num(7,6)="0x18"

num(7,7)="0x1c"

num(7,8)="0x1c"

'数字8

num(8,0)="0x7c"

num(8,1)="0xfe"

num(8,2)="0xee"

num(8,3)="0x7c"

num(8,4)="0x7c"

num(8,5)="0xee"

num(8,6)="0xee"

num(8,7)="0xfe "

num(8,8)="0x7c"

'数字9

num(9,0)="0x3c"

num(9,1)="0x7c"

num(9,2)="0xee"

num(9,3)="0xee"

num(9,4)="0xfe"

num(9,5)="0xec"

num(9,6)="0xe0"

num(9,7)="0x7e"

num(9,8)="0x3c"

下面实现这个的代码,把上面的数字数组(红色的)保存为funNum.asp

下面的文件部分,单独保存为一个ASP页

<%

response.Buffer=true

response.ExpiresAbsolute=now()-1

response.expires=0

response.CacheControl="no-cache"

%>

<!--#include file="funNum.asp"-->

<!--funNum.asp就是教程里那几个数组//-->

<%

const countHeight=9 '图片的高度

const countlength=6 '图片里数字的位数

const numBinBit=8 '这是数字数组里的二进制位数,好象只能使用八位以下的即11111111

const countWidth=48 'countlength*numBinBit得到

const imgtype="image/x-xbitmap"

dim countBody '图片信息

dim tmpcountbody '用于存放后面生成的图片数据

tmpcountbody=""

countBody="#define js_counter_width " & countWidth & vbCrLf

countBody=countBody & "#define js_counter_height " & countHeight & vbCrLf

countBody=countBody & "static unsigned char js_counter_bits[]={" & vbCrLf

dim numid '需要生成图片的数字

dim numarray() '将取得的numid分割成一个个的数字组成一维数组

numid="369245" '编写一个函数用来生成数字即可

if len(numid)<countLength then

for i=1 to countLength-len(numid)

numid="0" & numid

next

end if

redim numarray(len(numid)-1) '直接定义数组时要指字一整型数值,重定义数组大小时可使用表达式

for i=0 to ubound(numarray,1)

numarray(i)=mid(numid,i+1,1)

next

for i=0 to countHeight-1

for j=0 to countlength-1

tmpcountbody=tmpcountbody & num(numarray(j),i) & ","

next

next

tmpcountbody=left(tmpcountbody,len(tmpcountbody)-1)

countBody=countBody & tmpcountbody & "}"

response.contenttype=imgtype

response.write countBody

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有