樱花樱花 发表于 2008-12-9 09:55:31

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

<P>本文为中国教程网合作伙伴印象特别供稿,转载必须取得<A href="http://www.vogim.com/"><FONT color=#000000>授权</FONT></A></P>

<P> 示例图片:http://www.china-oil.com/test/count.asp<BR>XBM图片是一个纯文本的文件,可以用ASP来自动生成。可以用它来使用网站登陆的验证码;<BR>我们用记事本打开该文件进行分析:<BR>其文件结构为:<BR>#define counter_width 48<BR>#define counter_height 9<BR>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}</P>

<P>文件扩展名为:.xbm</P>

<P>#define counter_width 48 ''这儿定义的是图片的宽度,一般为8的倍数<BR>#define counter_height 9 ''这儿定义的是图片的高度,是任意的。<BR>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} ''这儿是图片用来显示内容的十六进制的代码</P>

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

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

<P>''此处声明0~9绘图用数组<BR><BR>dim num(9,8)<BR>''数字0<BR>num(0,0)="0x38"<BR>num(0,1)="0x7c"<BR>num(0,2)="0xee"<BR>num(0,3)="0xee"<BR>num(0,4)="0xee"<BR>num(0,5)="0xee"<BR>num(0,6)="0xee"<BR>num(0,7)="0x7c"<BR>num(0,8)="0x38"<BR>''数字1<BR>num(1,0)="0x70"<BR>num(1,1)="0x78"<BR>num(1,2)="0x7c"<BR>num(1,3)="0x74"<BR>num(1,4)="0x70"<BR>num(1,5)="0x70"<BR>num(1,6)="0x70"<BR>num(1,7)="0x70"<BR>num(1,8)="0x70"<BR>''数字2<BR>num(2,0)="0x7c"<BR>num(2,1)="0xfe"<BR>num(2,2)="0xee"<BR>num(2,3)="0xe0"<BR>num(2,4)="0x70"<BR>num(2,5)="0x38"<BR>num(2,6)="0x1c"<BR>num(2,7)="0xfe"<BR>num(2,8)="0xfe"<BR>''数字3<BR>num(3,0)="0x7c"<BR>num(3,1)="0xfe"<BR>num(3,2)="0xee"<BR>num(3,3)="0x60"<BR>num(3,4)="0x30"<BR>num(3,5)="0xe0"<BR>num(3,6)="0xee"<BR>num(3,7)="0xfe"<BR>num(3,8)="0x7c"<BR>''数字4<BR>num(4,0)="0x70"<BR>num(4,1)="0x78"<BR>num(4,2)="0x7c"<BR>num(4,3)="0x76"<BR>num(4,4)="0x77"<BR>num(4,5)="0xff"<BR>num(4,6)="0xff"<BR>num(4,7)="0x70"<BR>num(4,8)="0x70"<BR>''数字5<BR>num(5,0)="0xfc"<BR>num(5,1)="0xfc"<BR>num(5,2)="0x0c"<BR>num(5,3)="0x7e"<BR>num(5,4)="0xfe"<BR>num(5,5)="0xe0"<BR>num(5,6)="0xee"<BR>num(5,7)="0xfe"<BR>num(5,8)="0x7c"<BR>''数字6<BR>num(6,0)="0x78"<BR>num(6,1)="0xfc"<BR>num(6,2)="0x0e"<BR>num(6,3)="0x6e"<BR>num(6,4)="0xfe"<BR>num(6,5)="0xee"<BR>num(6,6)="0xee"<BR>num(6,7)="0xfc"<BR>num(6,8)="0x78"<BR>''数字7<BR>num(7,0)="0xfe"<BR>num(7,1)="0xfe"<BR>num(7,2)="0x60"<BR>num(7,3)="0x70"<BR>num(7,4)="0x38"<BR>num(7,5)="0x38"<BR>num(7,6)="0x18"<BR>num(7,7)="0x1c"<BR>num(7,8)="0x1c"<BR>''数字8<BR>num(8,0)="0x7c"<BR>num(8,1)="0xfe"<BR>num(8,2)="0xee"<BR>num(8,3)="0x7c"<BR>num(8,4)="0x7c"<BR>num(8,5)="0xee"<BR>num(8,6)="0xee"<BR>num(8,7)="0xfe "<BR>num(8,8)="0x7c"<BR>''数字9<BR>num(9,0)="0x3c"<BR>num(9,1)="0x7c"<BR>num(9,2)="0xee"<BR>num(9,3)="0xee"<BR>num(9,4)="0xfe"<BR>num(9,5)="0xec"<BR>num(9,6)="0xe0"<BR>num(9,7)="0x7e"<BR>num(9,8)="0x3c"</P>

<P> </P>

<P>下面实现这个的代码,把上面的数字数组(红色的)保存为funNum.asp<BR>下面的文件部分,单独保存为一个ASP页<BR>&lt;%<BR>response.Buffer=true<BR>response.ExpiresAbsolute=now()-1<BR>response.expires=0<BR>response.CacheControl="no-cache"<BR>%&gt;<BR>&lt;!--#include file="funNum.asp"--&gt;



<P>本文为中国教程网合作伙伴印象特别供稿,转载必须取得<A href="http://www.vogim.com/"><FONT color=#000000>授权</FONT></A></P>

<P> 示例图片:http://www.china-oil.com/test/count.asp<BR>XBM图片是一个纯文本的文件,可以用ASP来自动生成。可以用它来使用网站登陆的验证码;<BR>我们用记事本打开该文件进行分析:<BR>其文件结构为:<BR>#define counter_width 48<BR>#define counter_height 9<BR>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}</P>

<P>文件扩展名为:.xbm</P>

<P>#define counter_width 48 ''这儿定义的是图片的宽度,一般为8的倍数<BR>#define counter_height 9 ''这儿定义的是图片的高度,是任意的。<BR>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} ''这儿是图片用来显示内容的十六进制的代码</P>

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

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

<P>''此处声明0~9绘图用数组<BR><BR>dim num(9,8)<BR>''数字0<BR>num(0,0)="0x38"<BR>num(0,1)="0x7c"<BR>num(0,2)="0xee"<BR>num(0,3)="0xee"<BR>num(0,4)="0xee"<BR>num(0,5)="0xee"<BR>num(0,6)="0xee"<BR>num(0,7)="0x7c"<BR>num(0,8)="0x38"<BR>''数字1<BR>num(1,0)="0x70"<BR>num(1,1)="0x78"<BR>num(1,2)="0x7c"<BR>num(1,3)="0x74"<BR>num(1,4)="0x70"<BR>num(1,5)="0x70"<BR>num(1,6)="0x70"<BR>num(1,7)="0x70"<BR>num(1,8)="0x70"<BR>''数字2<BR>num(2,0)="0x7c"<BR>num(2,1)="0xfe"<BR>num(2,2)="0xee"<BR>num(2,3)="0xe0"<BR>num(2,4)="0x70"<BR>num(2,5)="0x38"<BR>num(2,6)="0x1c"<BR>num(2,7)="0xfe"<BR>num(2,8)="0xfe"<BR>''数字3<BR>num(3,0)="0x7c"<BR>num(3,1)="0xfe"<BR>num(3,2)="0xee"<BR>num(3,3)="0x60"<BR>num(3,4)="0x30"<BR>num(3,5)="0xe0"<BR>num(3,6)="0xee"<BR>num(3,7)="0xfe"<BR>num(3,8)="0x7c"<BR>''数字4<BR>num(4,0)="0x70"<BR>num(4,1)="0x78"<BR>num(4,2)="0x7c"<BR>num(4,3)="0x76"<BR>num(4,4)="0x77"<BR>num(4,5)="0xff"<BR>num(4,6)="0xff"<BR>num(4,7)="0x70"<BR>num(4,8)="0x70"<BR>''数字5<BR>num(5,0)="0xfc"<BR>num(5,1)="0xfc"<BR>num(5,2)="0x0c"<BR>num(5,3)="0x7e"<BR>num(5,4)="0xfe"<BR>num(5,5)="0xe0"<BR>num(5,6)="0xee"<BR>num(5,7)="0xfe"<BR>num(5,8)="0x7c"<BR>''数字6<BR>num(6,0)="0x78"<BR>num(6,1)="0xfc"<BR>num(6,2)="0x0e"<BR>num(6,3)="0x6e"<BR>num(6,4)="0xfe"<BR>num(6,5)="0xee"<BR>num(6,6)="0xee"<BR>num(6,7)="0xfc"<BR>num(6,8)="0x78"<BR>''数字7<BR>num(7,0)="0xfe"<BR>num(7,1)="0xfe"<BR>num(7,2)="0x60"<BR>num(7,3)="0x70"<BR>num(7,4)="0x38"<BR>num(7,5)="0x38"<BR>num(7,6)="0x18"<BR>num(7,7)="0x1c"<BR>num(7,8)="0x1c"<BR>''数字8<BR>num(8,0)="0x7c"<BR>num(8,1)="0xfe"<BR>num(8,2)="0xee"<BR>num(8,3)="0x7c"<BR>num(8,4)="0x7c"<BR>num(8,5)="0xee"<BR>num(8,6)="0xee"<BR>num(8,7)="0xfe "<BR>num(8,8)="0x7c"<BR>''数字9<BR>num(9,0)="0x3c"<BR>num(9,1)="0x7c"<BR>num(9,2)="0xee"<BR>num(9,3)="0xee"<BR>num(9,4)="0xfe"<BR>num(9,5)="0xec"<BR>num(9,6)="0xe0"<BR>num(9,7)="0x7e"<BR>num(9,8)="0x3c"</P>

<P> </P>

<P>下面实现这个的代码,把上面的数字数组(红色的)保存为funNum.asp<BR>下面的文件部分,单独保存为一个ASP页<BR>&lt;%<BR>response.Buffer=true<BR>response.ExpiresAbsolute=now()-1<BR>response.expires=0<BR>response.CacheControl="no-cache"<BR>%&gt;<BR>&lt;!--#include file="funNum.asp"--&gt;



<BR>&lt;!--funNum.asp就是教程里那几个数组//--&gt;<BR>&lt;%<BR>const countHeight=9 ''图片的高度<BR>const countlength=6 ''图片里数字的位数<BR>const numBinBit=8 ''这是数字数组里的二进制位数,好象只能使用八位以下的即11111111<BR>const countWidth=48 ''countlength*numBinBit得到<BR>const imgtype="image/x-xbitmap"<BR>dim countBody ''图片信息<BR>dim tmpcountbody ''用于存放后面生成的图片数据<BR>tmpcountbody=""<BR>countBody="#define js_counter_width " &amp; countWidth &amp; vbCrLf<BR>countBody=c
页: [1]
查看完整版本: 用ASP生成XBM数字图片(可用来生成验证码) (1)