使用ASP生成任意长度彩色BMP验证码图片

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
< %@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'ASP生成BMP验证码图片
'石卓林(精彩)
'Site URL:Http://www.camxam.com
'EMail:camxam@163.com
'QQ:383193853
'MSN:camxam@163.com
'2006年3月9日 星期四
'使用方法:在需要显示的页面嵌入  <img Src="Bmp.asp" />, 在验证码检验中使用 Session(SessionName属性值) 作为验证码参考值
'属性:
' SessionName String 会话名称. 例 Object.SessionName = "Code"
' TextLength Int  字符长度. 例 Object.TextLength = 4
' BackColor String 背景颜色,多个颜色用"," 分隔. 例:Object.BackColor = "#FF0000,#00FF00,#0000FF".
' TextColor String 文字颜色,同上.
' YawpColor String 杂点颜色,同上.
' YawpCount Int  杂点比例 范围 0-100. 例 Object.YawpCount = 30
'方法: 
' SetTextInfo String 设置字库描述信息 注意在执行任何操作前必须描述和增加点阵数据. 例: Object.SetTextInfo "这是卡通字库"
' AddTextData String 增加字库点阵信息 注意在执行任何操作前必须描述和增加点阵数据. 例: Object.AddTextData "E 00000000 00000000 01111100 01000000 01000000 01111000 01000000 01000000 01000000 01111100 00000000 00000000"
' Write()    输出图片数据
'注意事项:
'1. 关于颜色字符串:
' 可以同时设置任意多种颜色 不同的颜色之间使用 "," 分隔. 程序会将预设的多种颜色随机显示
'2. 关于会话名称:
' SessionName属性设置的是 Session 变量名称.通过在其它页面中将表单数据与此 Session变量值比较,实现验证码功能.
'3. 关于字符长度:
' 字符长度必须大于 1 .最大长度没有限制. 实际上不可能设置很大 "呵呵!ASP毕竟不是画图软件."
'4. 杂点颜色杂点比例:
' 杂点比例范围 0-100. 此值越大杂点越多,0 为无杂点,100全部是杂点.
' 和背景颜色与文字颜色一样 杂点颜色也可以设置一种一上的颜色.程序会随机使用其中的颜色
' 如将杂点比例设置为 0 则 杂点颜色属性可以不设置
'5. 字库信息:
' 字库信息就是一个字符串,此信息必须设置.内容格式不要求
'6. 字库点阵:
' 程序是随机查询字库点阵内容输出BMP图片的.
' 每一条点阵.的格式必须一样.
' 每条点阵信息的长度必须一样.
' 所有点阵信息的行数必须一样.
' 所有点阵信息的每行长度必须一样.
' 点阵信息格式:
'字符 第一行点阵 第二行点阵 第三行点阵 第四行点阵 第五行点阵 第六行点阵 第七行点阵 ...... ...... ..... ...... ......
'0 00000000 00000000 00111000 01000100 01000100 01000100 01000100 01000100 01000100 00111000 00000000 00000000
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
Class CAMXAM_COM_RndCodeBmp
 Private TextDataLib,TextData,BmpData,BmpHead,BmpWidth,BmpHeight,BmpSize,TextDataLength,SessionString
 Public SessionName,TextLength,BackColor,TextColor,YawpColor,YawpCount
 Private Sub Class_Initialize()
 End Sub
 Private Sub Class_Terminate()
 End Sub
 Public Function SetTextInfo(TextString)
  ReDim TextDataLib(0)
   TextDataLib(0) = TextString
 End Function
 Public Function AddTextData(TextDataString)
   TextDataLength = UBound(TextDataLib) + 1
  ReDim Preserve TextDataLib(TextDataLength)
   TextDataLib(TextDataLength) = TextDataString
 End Function
 Private Function Getbinary(IntNumber)
  Dim IntBin0,IntBin1,IntBin2,IntBin0_,IntBin1_,IntBin2_
   IntBin0 = Int(IntNumber / 16777216)
   IntBin0_= IntNumber Mod 16777216
   IntBin1 = Int(IntBin0_ / 65536)
   IntBin1_= IntBin0_ Mod 65536
   IntBin2 = Int(IntBin1_ / 256)
   IntBin2_= IntBin1_ Mod 256
   Getbinary = ChrB(IntBin2_) & ChrB(IntBin2) & ChrB(IntBin1) & ChrB(IntBin0)
 End Function
 Private Function GetColorString(ColorString)
  Dim ColorArray,CALength
   ColorArray = Split(ColorString,",")
   CALength = UBound(ColorArray)
   GetColorString = ColorArray(GetRnd(0,CALength))
 End Function
 Private Function GetRnd(LowNumber,UpNumber)
  Randomize Timer
   GetRnd = Int((UpNumber - LowNumber + 1) * Rnd + LowNumber)
 End Function
 Private Function FileHeader()
  Response.Expires = 0
  Response.AddHeader "Pragma","no-cache"
  Response.AddHeader "cache-ctrol","no-cache"
  Response.ContentType = "Image/BMP"
 End Function
 Private Function SetBmpHead(BmpSize,Width,Height)
  BmpHead = ChrB(66) & ChrB(77)
  BmpHead = BmpHead & Getbinary(BmpSize+54)
  BmpHead = BmpHead & Getbinary(0)
  BmpHead = BmpHead & Getbinary(54)
  BmpHead = BmpHead & Getbinary(40)
  BmpHead = BmpHead & Getbinary(Width)
  BmpHead = BmpHead & Getbinary(Height)
  BmpHead = BmpHead & ChrB(1) & ChrB(0)
  BmpHead = BmpHead & ChrB(24) & ChrB(0)
  BmpHead = BmpHead & Getbinary(0)
  BmpHead = BmpHead & Getbinary(BmpSize)
  BmpHead = BmpHead & Getbinary(65536)
  BmpHead = BmpHead & Getbinary(65536)
  BmpHead = BmpHead & Getbinary(16777216)
  BmpHead = BmpHead & Getbinary(16777216)
 End Function
 Private Function GetRndTextData()
  ReDim TextData(TextLength-1)
  Dim IText
  For IText = 0 To TextLength-1 Step +1
   TextData(IText) = GetColorString(BackColor) & " " & GetColorString(TextColor) & " " & TextDataLib(GetRnd(1,TextDataLength))
   SessionString = SessionString & GetTextData(IText)(4)
  Next
 End Function
 Private Function GetTextData(IText)
  Dim TextArray,ArrayLength,ITextData
   TextArray = Split(TextData(IText)," ")
   ArrayLength = UBound(TextArray)
  Dim TextDataArray(5)
   TextDataArray(0) = TextArray(0)
   TextDataArray(1) = TextArray(1)
   TextDataArray(2) = Len(TextArray(3))
   TextDataArray(3) = ArrayLength - 2
   TextDataArray(4) = TextArray(2)
  For ITextData = 3 To ArrayLength Step +1
   TextDataArray(5) = TextDataArray(5) & " " & TextArray(ITextData)
  Next
   GetTextData = TextDataArray
 End Function
 Private Function GetColor(ColorString)
  GetColor = ChrB("&H" & Mid(ColorString,6,2)) & ChrB("&H" & Mid(ColorString,4,2)) & ChrB("&H" & Mid(ColorString,2,2))
 End Function
 Private Function BmpColor(ColorA,ColorB)
  Dim BmpColor_(1)
   BmpColor_(0) = GetColor(ColorA)
   BmpColor_(1) = GetColor(ColorB)
   BmpColor = BmpColor_
 End Function
 Private Function SetBmpData()
  Dim TextInfo,FontData,I,J,K
   GetRndTextData()
   TextInfo = GetTextData(0)
   BmpHeight = TextInfo(3)
   BmpWidth = TextInfo(2) * TextLength
   BmpSize = BmpHeight * BmpWidth * 3
  For I = BmpHeight To 1 Step -1
   For J = 0 To TextLength -1 Step +1
    TextInfo = GetTextData(J)
    FontData = Split(TextInfo(5)," ")(I)
    For K = 1 To TextInfo(2) Step +1
     If GetRnd(1,99) < YawpCount Then
      BmpData = BmpData & GetColor(GetColorString(YawpColor))
     Else
      BmpData = BmpData & BmpColor(TextInfo(0),TextInfo(1))(Mid(FontData,K,1))
     End If
    Next
   Next
  Next
 End Function
 Public Function Write()
  FileHeader()
  SetBmpData()
  SetBmpHead BmpSize,BmpWidth,BmpHeight
  Response.BinaryWrite BmpHead
  Response.BinaryWrite BmpData
  Session(SessionName) = SessionString
 End Function
End Class
Dim Bmp
Set Bmp = New CAMXAM_COM_RndCodeBmp
 Bmp.SetTextInfo "8 × 12 字库 字库来源 Wh_BmpText http://vcc5.vicp.net Email: wuyingke5155@163.com Oicq:54883661" '字库信息
 Bmp.AddTextData "0 00000000 00000000 00111000 01000100 01000100 01000100 01000100 01000100 01000100 00111000 00000000 00000000"
 Bmp.AddTextData "1 00000000 00000000 00110000 01010000 00010000 00010000 00010000 00010000 00010000 01111100 00000000 00000000"
 Bmp.AddTextData "2 00000000 00000000 01111000 00000100 00000100 00001000 00010000 00100000 01000000 01111100 00000000 00000000"
 Bmp.AddTextData "3 00000000 00000000 01111000 00000100 00000100 00111000 00000100 00000100 00000100 01111000 00000000 00000000"
 Bmp.AddTextData "4 00000000 00000000 00001000 00011000 00101000 00101000 01001000 01111100 00001000 00001000 00000000 00000000"
 Bmp.AddTextData "5 00000000 00000000 01111000 01000000 01000000 01110000 00001000 00001000 00001000 01110000 00000000 00000000"
 Bmp.AddTextData "6 00000000 00000000 00111100 01000000 01000000 01011000 01100100 01000100 01000100 00111000 00000000 00000000"
 Bmp.AddTextData "7 00000000 00000000 01111100 00000100 00001000 00010000 00100000 00100000 01000000 01000000 00000000 00000000"
 Bmp.AddTextData "8 00000000 00000000 00111000 01000100 01000100 00111000 01001100 01000100 01000100 00111000 00000000 00000000"
 Bmp.AddTextData "9 00000000 00000000 00111000 01000100 01000100 01001100 00110100 00000100 00000100 01111000 00000000 00000000"
 Bmp.AddTextData "A 00000000 00000000 00010000 00101000 00101000 00101000 01000100 01111100 01000100 10000010 00000000 00000000"
 Bmp.AddTextData "B 00000000 00000000 01111000 01000100 01000100 01111000 01001000 01000100 01000100 01111000 00000000 00000000"
 Bmp.AddTextData "C 00000000 00000000 00011100 00100000 01000000 01000000 01000000 01000000 00100000 00011100 00000000 00000000"
 Bmp.AddTextData "D 00000000 00000000 01110000 01001000 01000100 01000100 01000100 01000100 01001000 01110000 00000000 00000000"
 Bmp.AddTextData "E 00000000 00000000 01111100 01000000 01000000 01111000 01000000 01000000 01000000 01111100 00000000 00000000"
 Bmp.AddTextData "F 00000000 00000000 01111100 01000000 01000000 01111000 01000000 01000000 01000000 01000000 00000000 00000000"
 Bmp.AddTextData "G 00000000 00000000 00011100 00100000 01000000 01000000 01000100 01000100 00100100 00011100 00000000 00000000"
 Bmp.AddTextData "H 00000000 00000000 01000100 01000100 01000100 01111100 01000100 01000100 01000100 01000100 00000000 00000000"
 Bmp.AddTextData "I 00000000 00000000 01111100 00010000 00010000 00010000 00010000 00010000 00010000 01111100 00000000 00000000"
 Bmp.AddTextData "J 00000000 00000000 00111000 00001000 00001000 00001000 00001000 00001000 00001000 01110000 00000000 00000000"
 Bmp.AddTextData "K 00000000 00000000 01000100 01001000 01010000 01100000 01100000 01010000 01001000 01000100 00000000 00000000"
 Bmp.AddTextData "L 00000000 00000000 01000000 01000000 01000000 01000000 01000000 01000000 01000000 01111100 00000000 00000000"
 Bmp.AddTextData "M 00000000 00000000 10000100 10000100 11001100 11001100 10110100 10110100 10000100 10000100 00000000 00000000"
 Bmp.AddTextData "N 00000000 00000000 01000100 01100100 01100100 01010100 01010100 01001100 01001100 01000100 00000000 00000000"
 Bmp.AddTextData "O 00000000 00000000 00010000 00101000 01000100 01000100 01000100 01000100 00101000 00010000 00000000 00000000"
 Bmp.AddTextData "P 00000000 00000000 01111000 01000100 01000100 01001000 01110000 01000000 01000000 01000000 00000000 00000000"
 Bmp.AddTextData "Q 00000000 00000000 00010000 00101000 01000100 01000100 01000100 01000100 00101000 00011000 00000100 00000000"
 Bmp.AddTextData "R 00000000 00000000 01111000 01000100 01000100 01000100 01111000 01001000 01000100 01000100 00000000 00000000"
 Bmp.AddTextData "S 00000000 00000000 00111100 01000000 01000000 00110000 00001000 00000100 00000100 01111000 00000000 00000000"
 Bmp.AddTextData "T 00000000 00000000 11111110 00010000 00010000 00010000 00010000 00010000 00010000 00010000 00000000 00000000"
 Bmp.AddTextData "U 00000000 00000000 01000100 01000100 01000100 01000100 01000100 01000100 01000100 00111000 00000000 00000000"
 Bmp.AddTextData "V 00000000 00000000 10000010 01000100 01000100 01000100 00101000 00101000 00101000 00010000 00000000 00000000"
 Bmp.AddTextData "W 00000000 00000000 10000010 10000010 10010010 10010010 01101100 01101100 01000100 01000100 00000000 00000000"
 Bmp.AddTextData "X 00000000 00000000 01000100 00101000 00101000 00010000 00010000 00101000 01000100 01000100 00000000 00000000"
 Bmp.AddTextData "Y 00000000 00000000 01000100 01000100 00101000 00101000 00010000 00010000 00010000 00010000 00000000 00000000"
 Bmp.AddTextData "Z 00000000 00000000 01111100 00000100 00001000 00010000 00010000 00100000 01000000 01111100 00000000 00000000"
 Bmp.SessionName = "code" '验证码用Session名称
 Bmp.TextLength = 4 '验证码长度
 Bmp.BackColor = "#FFFFFF,#EEEEEE" '背景颜色,多个颜色用"," 分隔
 Bmp.TextColor = "#FF0000,#0000FF" '文字颜色,多个颜色用"," 分
 Bmp.YawpColor = "#DDDDDD,#EEEEEE" '噪波点颜色,多个颜色使用"," 分隔
 Bmp.YawpCount = 6 '噪波点比例 0-100
 Bmp.Write()
%>
ASP实现生成图片功能的实现 由于我们培训打折网需要采用全新的模式,改进某些功能,只有用户在我们网站报名,如果是已经合作的培训机构的话,就可以生成一张电子优惠卷,这个优惠卷可以下载下来,然后拿去打印即可拿去培训机构实现学费优惠。首先需要一个图片模板,模板用PS已经做好了。剩下的只需要网页程序生成这样的图片即可。那么如何生成呢???于是在网上找到了这样一个实例,这个类非常的简单好用。在 阅读详情

相关推荐

ASP验证码-非常优秀的ASP随机验证码

看很多人都在找asp 验证码 asp 随机验证 我收集了四个非常优秀的ASP随机验证码,非常好用,分别为: Asp纯数字随机验证码程序 (5.98 kb) Asp数字及字母组合验证码程序(5.98 kb) Asp纯字母验证码程序.zip (5.98 kb GetCode(ASP验证码生成代码) 以上源码:完全免费的传统ASPVBScript 。 安全码是完全随机的。 动态图像处理。 没有图像文件的要求。 没有组件需要。 创建一个跨浏览器兼容的动态随机captcha图像。 您可以使用自定义调色板图像。 *用户的浏览器必须支持Cookie和session会话状态必须启用

ASP.NET MVC中的生成图片

开发工具与关键技术:VS+生成图片 作者: 李伙 撰写时间: 2019年5月5日 在MVC中,在学习重庆邮电大学这个项目时,学到证书维护这个页面时,里面有个生成图片的方法,是将学生的合格成绩生成一张合格证书的图片,我们在以后做项目时也可以参考生成图片的方法来生成我们需要的图片,下面以生成图片的方法为例,我们简单认识一下。先看看js部分的代码: 如上图所示:首先是获取证书信息表的选中行,我们可以...

weixin_44540471的博客 2259

这是一个很漂亮的asp验证码

这是一个很漂亮ASP验证码,希望大家喜欢,下载后可以直接使用,插入。

ASP生成图片验证码,不需要组件

、建立font.asp文件。作用:将随机码生成图片。2、建立safecode.asp3、建立canvas.asp。作用:产生随机码。4、在生成页面调用,如会员注册页。该页不需要用include file="...", 具体代码如下:建立font.asp 文件Dim FontDim Letter(30)Set Font = Server.CreateObject("Scripting

南三方---网站设计开发录 1052

随机数字直接生成图片ASP代码

随机数字直接生成图片ASP代码,可以做认证码。xbm.aspResponse.Buffer = TrueWith Response.Expires = -1.AddHeader "Pragma","no-cache".AddHeader "cache-ctrol","no-cache"End WithDim numRandomizenum = Int(7999 * Rnd + 2000)Se

网络文档(Lonz) 1330

如何用asp制作图片

------------------------------------File: Ip.aspConnDatabaseDim tempip,myipnumeber,sql,rs1Dim country,citytempip=ReqIPtempip = Split(tempip,".") if Ubound(tempip)=3 then    For i=0 To Ubound(tempip)

派的无理性 1642

ASP 生成 彩色 可变长 验证码程序

验证码生成程序特点如下:一、彩色;二、BMP 图像色深为 16 位,生成图片体积更小;(4位长的验证码只有几百字节)三、长度可自定义;(1位至25位可固定设置,也可以自己改成动态)四、背景杂色深度可自定义;具体请看代码注:代码中并没有针对动网的 设置验证码 Session 的地方。想用的朋友自己根据需要改一下,位置就在代码中出现  Session("Num") 的那一行

攻城师 810

自己收集的各种ASP验证码

 由于项目的需要去Google搜了一下 ,还真多记得“想当年”某天上午在这里路过,看到一位朋友贴的自己写的验证码程序,虽然他的程序是黑白有杂点,但其实很容易被破解的,但却有不少人喜欢着。。。没办法,当天下午研究了一翻 BMP 图片,然后就写出了这些代码,只是当初没有公布,眼看今天这么多坏人乱在很多论坛上注册用户来发广告,所以才贴出来共享一下。本验证码生成程序特点如下:一、彩

上班搞IT,下班搞ITF。 3451

(原创)验证码原理与实现(asp

为了防止一些非法程序通过自动提交数据来刺探用户账号和密码,验证码的利用显得非常必要!验证码的实现是通过后台程序生成图片文件储存在内存中并显示在前台。因此后台生成图片格式不尽相同!这里以常用的Bmp格式为例!程序的设计思路应该相似,而且在网上也很多相关的程序,但是讲解具体如何实现的却不多!本人也为新手,见谅!    要谈验证码的实现就必须谈谈图片文件的格式了!这里Bmp图片文件的格式包括四个部

chenmiao_1988的专栏 992

asp生成html插件完整版

asp生成html插件完整版

ASP生成Word或Excel或RTF或PDF或图片

相信很多程序员和我一样,为ASP生成Office文档或图片困惑了很久。本方法与已经上传的任何方法都不同,而且无需在服务器端进行设置,可直接生成多种格式的文档或图片

asp html 生成图片,asp无组件上传图片生成缩略图

先创建一文件夹,并创建虚拟目录或站长点。1.增加上传页xAdd.html无组件上传"POST"name="myform"action="xSave.asp"target="_self">"PicPath"type="text"id="PicPath"readonly="true">"sPicPath"type="hidden"id="sPicPath">""id="objimg"...

weixin_28840591的博客 493

ASP生成图片

一般,你可以看到一些验证码图片即是如此/1,XBM文件 <%@Language=javascript%><%//一个最简单的例子//可广泛应用于计数器、时钟等任何需要动态生成图形的地方//通过改变ContentType的值,比如改为"image/gif"可以作出更漂亮的图形Response.ContentType="image/x-xbit...

weixin_30781107的博客 516

ASP动态生成wbmp图片的程序(转)

'函数1: '将字符串转换成二进制 Function StoB(varstr) str2bin = "" For i = 1 To Len(varstr) varchar = Mid(varstr, i, 1) str2bin...

cuankuangzhong6373的博客 321

Asp无组件生成缩略图

首先,我们知道在页面中显示图片是如下代码:     src是图片路径,border控制图片边缘宽度,width是图片长度,height是图片的高度。缩略图的生成其实就是在原始尺寸上缩放。但一般为了尽量少失真,我们都会按比例缩放。于是,获取图片的长宽尺寸也就成了生成缩略图的重点。  下面便是编写无组件生成缩略图的步骤:  1.无组件获取图片大小  以前刚学ASP不久时看到过一篇利用ASCII码实现

爱生活 968

ASP验证码图形生成

  我们经常在登陆时要让用户输入个验证码,对于这个验证码的产生,有好几种方法,有直接就是数字,那太简单,还有的是由数字映射到相应的图片,那样又不大好,找了一下网上关于这方面的介绍,决定由程序生成一张图片图片里是验证码。  这里又有2种方法,一种要其它组件,当然是不用组件的好了。      网上对于这方面的介绍也有不少,这里再写出来,是为了方便。  首先生成图片的文件为validatepic.as

往事如风 2363
下一篇: 使用ASP生成任意长度彩色BMP验证码图片
camxam
博客等级 码龄21年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值