CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

产生验证码问题,在线等

楼主Win32X()2006-03-03 19:56:12 在 Web 开发 / ASP 提问

网上DOWN了下面代码,产生的图片太小了,如何改大点  
   
  <%  
  Option   Explicit  
  Response.Expires   =   0  
  Response.AddHeader   "Pragma","no-cache"  
  Response.AddHeader   "cache-ctrol","no-cache"  
  Response.ContentType   =   "Image/BMP"  
  Randomize   Timer  
   
  Dim   Text_Data(9),Text_Len,Int_Temp(),I,j,k,Int_Temp2  
   
  ''*****   参数配置区   *****  
   
  Text_Len   =   4   ''验证码长度(支持1-25位)  
   
  ''**********************  
   
  ReDim   Int_Temp(   Text_Len   -   1   )  
   
  Text_Data(0)     =   "00000000000001111000001100110000110111000011011100001100110000111011000011101100001100110000011110000000000000"  
  Text_Data(1)     =   "00000000000000011000000011100000111110000000011000000001100000000110000000011000000001100000000110000000000000"  
  Text_Data(2)     =   "00000000000001111000001100110000110011000000001100000001100000001100000001100000001100000000111111000000000000"  
  Text_Data(3)     =   "00000000000001111000001100110000110011000000001100000011100000000011000011001100001100110000011110000000000000"  
  Text_Data(4)     =   "00000000000001100000000110000000011011000001101100000110110000110011000011111110000000110000000011000000000000"  
  Text_Data(5)     =   "00000000000011111100001100000000110000000011000000001111100000000011000000001100000001100000111100000000000000"  
  Text_Data(6)     =   "00000000000000111000000011000000011000000011111000001100110000110011000011001100001100110000011110000000000000"  
  Text_Data(7)     =   "00000000000011111100000000110000000110000000011000000011000000001100000001100000000110000000011000000000000000"  
  Text_Data(8)     =   "00000000000001111000001100110000110011000011101100000111100000110111000011001100001100110000011110000000000000"  
  Text_Data(9)     =   "00000000000001111000001100110000110011000011001100001100110000011111000000011000000011000000011100000000000000"  
   
  ''下面随机生成各位验证码  
  Session("Num")   =   ""  
  For   I   =   0   To   Text_Len   -   1  
        Int_Temp(I)   =   Int(Rnd   *   10)  
        Session("Num")   =   Session("Num")   +   Mid("0123456789",Int_Temp(I)+1,1)  
  Next  
   
  ''下面输出文件头部分  
  Int_Temp2   =   (Text_Len   -   1)   \   4   *   220   +   ((Text_Len   -   1)   /   4   -   (Text_Len   -   1)   \   4   *   4)   *   44  
  Response.BinaryWrite   ChrB(&H42)   &   ChrB(&H4D)  
  Response.BinaryWrite   ChrB(((Int_Temp2   +   206)   /   256   -   (Int_Temp2   +   206)   \   256)   *   256)   &   ChrB((Int_Temp2   +   206)   \   256)       ''特殊位  
  Response.BinaryWrite   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H76)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H28)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)  
  Response.BinaryWrite   ChrB(Text_Len   *   10)       ''特殊位  
  Response.BinaryWrite   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HB)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H1)   &   ChrB(0)   &   ChrB(&H4)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)  
  Response.BinaryWrite   ChrB(((Int_Temp2   +   88)   /   256   -   (Int_Temp2   +   88)   \   256)   *   256)   &   ChrB((Int_Temp2   +   88)   \   256)       ''特殊位  
   
  Response.BinaryWrite   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(16)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(16)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(0)  
  Response.BinaryWrite   ChrB(&H80)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&H80)   &   ChrB(&H80)   &   ChrB(&H80)   &   ChrB(0)   &   ChrB(&HC0)   &   ChrB(&HC0)   &   ChrB(&HC0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(&HFF)   &   ChrB(0)   &   ChrB(0)   &   ChrB(&HFF)   &   ChrB(&HFF)   &   ChrB(&HFF)   &   ChrB(0)  
   
  ''下面输出图片数据  
  For   i   =   10   to   0   Step   -1  
        For   j   =   0   to   Text_Len   -   1  
              For   k   =   1   to   9   Step   2  
                    If   Mid(Text_Data(Int_Temp(j))   ,     i   *   10   +   k   ,   1)   =   "0"   Then   Int_Temp2   =   Get_BackColor()   *   16   Else   Int_Temp2   =   Get_ForeColor()   *   16  
                    If   Mid(Text_Data(Int_Temp(j))   ,     i   *   10   +   k   +   1   ,   1)   =   "0"   Then   Int_Temp2   =   Int_Temp2   +   Get_BackColor()   Else   Int_Temp2   =   Int_Temp2   +   Get_ForeColor()  
                    Response.BinaryWrite   ChrB(Int_Temp2)  
              Next  
        Next  
        Int_Temp2   =   (Text_Len   /   4   -   Text_Len   \   4)   *   4  
        Select   Case   Int_Temp2  
        Case   1  
              Response.BinaryWrite   ChrB(0)   &   ChrB(0)   &   ChrB(0)  
        Case   2  
              Response.BinaryWrite   ChrB(0)   &   ChrB(0)  
        Case   3  
              Response.BinaryWrite   ChrB(0)  
        End   Select  
  Next  
   
  Function   Get_BackColor()  
  ''得到一个背景色  
  If   Int(Rnd   *   30)   =   0   Then   ''注:此处的   Rnd   *   30   是决定背景杂色的多少,值越大,则杂色越少,图片越容易看清楚  
        Get_BackColor   =   CInt(Mid("00021209",Int(Rnd   *   4)   *   2   +   1,2))  
  Else  
        Get_BackColor   =   CInt(Mid("081515151515",Int(Rnd   *   6)   *   2   +   1,2))  
  End   If  
  End   Function  
   
  Function   Get_ForeColor()  
  ''得到一个前景色  
  Get_ForeColor   =   CInt(Mid("00021209",Int(Rnd   *   4)   *   2   +   1,2))  
  End   Function  
  %>  
  问题点数:60、回复次数:1Top

1 楼cslren(位流)回复于 2006-03-03 20:24:31 得分 0

如果你看得懂,你一定会改,如果你看不懂,说了你也不懂。如果你是想用60分叫人帮你做,可能没人愿意干。  
   
  思路:自己做1-9BMP图片(大小一样),除去BMP头,只取内容,For   i   =   10   to   0   Step   -1  
        For   j   =   0   to   Text_Len   -   1这句是说图片高为10像素.  
  你得弄清楚BMP结构。然后照BMP结构输出BMP头,然后输出数据。  
   
  我做过。Top

相关问题

  • [求助]用Servlet产生验证码出错,请求帮助!!!!
  • 密码验证
  • 验证码
  • 密码验证
  • 密码验证
  • 验证码问题
  • *******问一个验证码的问题:怎么我的验证码不显示呢。在线等!*****
  • 如果MSSQL的登陆验证是采用的WINDOWS身份验证,那么JDBC怎么写代码?在线等
  • 100分!!密码验证问题在线等待。。。。。。。。。。。。
  • 关于图片验证码的奇怪问题,在线等!

关键词

  • 结构
  • bmp
  • 产生
  • 图片
  • 头
  • 人

得分解答快速导航

  • 帖主:Win32X

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo