<%@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日 星期四
'使用方法:在需要显示的页面嵌入  , 在验证码检验中使用 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_RndCodeBmpPrivate TextDataLib,TextData,BmpData,BmpHead,BmpWidth,BmpHeight,BmpSize,TextDataLength,SessionStringPublic SessionName,TextLength,BackColor,TextColor,YawpColor,YawpCountPrivate Sub Class_Initialize()End SubPrivate Sub Class_Terminate()End SubPublic Function SetTextInfo(TextString)ReDim TextDataLib(0)TextDataLib(0) = TextStringEnd FunctionPublic Function AddTextData(TextDataString)TextDataLength = UBound(TextDataLib) + 1ReDim Preserve TextDataLib(TextDataLength)TextDataLib(TextDataLength) = TextDataStringEnd FunctionPrivate Function Getbinary(IntNumber)Dim IntBin0,IntBin1,IntBin2,IntBin0_,IntBin1_,IntBin2_IntBin0 = Int(IntNumber / 16777216)IntBin0_= IntNumber Mod 16777216IntBin1 = Int(IntBin0_ / 65536)IntBin1_= IntBin0_ Mod 65536IntBin2 = Int(IntBin1_ / 256)IntBin2_= IntBin1_ Mod 256Getbinary = ChrB(IntBin2_) & ChrB(IntBin2) & ChrB(IntBin1) & ChrB(IntBin0)End FunctionPrivate Function GetColorString(ColorString)Dim ColorArray,CALengthColorArray = Split(ColorString,",")CALength = UBound(ColorArray)GetColorString = ColorArray(GetRnd(0,CALength))End FunctionPrivate Function GetRnd(LowNumber,UpNumber)Randomize TimerGetRnd = Int((UpNumber - LowNumber + 1) * Rnd + LowNumber)End FunctionPrivate Function FileHeader()Response.Expires = 0Response.AddHeader "Pragma","no-cache"Response.AddHeader "cache-ctrol","no-cache"Response.ContentType = "Image/BMP"End FunctionPrivate Function SetBmpHead(BmpSize,Width,Height)BmpHead = ChrB(66) & ChrB(77) '类型"BM"BmpHead = BmpHead & Getbinary(BmpSize+54) '文件的大小(字节)BmpHead = BmpHead & Getbinary(0) '保留必须为0BmpHead = 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) '用字节数表示的位图数据的大小。该数必须是4的倍数BmpHead = BmpHead & Getbinary(65536) '用象素/米表示的水平分辨率BmpHead = BmpHead & Getbinary(65536) '用象素/米表示的垂直分辨率BmpHead = BmpHead & Getbinary(16777216) '位图使用的颜色数BmpHead = BmpHead & Getbinary(16777216) '指定重要的颜色数End FunctionPrivate Function GetRndTextData()ReDim TextData(TextLength-1)Dim ITextFor IText = 0 To TextLength-1 Step +1TextData(IText) = GetColorString(BackColor) & " " & GetColorString(TextColor) & " " & TextDataLib(GetRnd(1,TextDataLength))SessionString = SessionString & GetTextData(IText)(4)NextEnd FunctionPrivate Function GetTextData(IText)Dim TextArray,ArrayLength,ITextDataTextArray = 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 +1TextDataArray(5) = TextDataArray(5) & " " & TextArray(ITextData) '点阵数据NextGetTextData = TextDataArrayEnd FunctionPrivate Function GetColor(ColorString)GetColor = ChrB("&H" & Mid(ColorString,6,2)) & ChrB("&H" & Mid(ColorString,4,2)) & ChrB("&H" & Mid(ColorString,2,2))End FunctionPrivate Function BmpColor(ColorA,ColorB)Dim BmpColor_(1)BmpColor_(0) = GetColor(ColorA)BmpColor_(1) = GetColor(ColorB)BmpColor = BmpColor_End FunctionPrivate Function SetBmpData()Dim TextInfo,FontData,I,J,KGetRndTextData()TextInfo = GetTextData(0)BmpHeight = TextInfo(3)BmpWidth = TextInfo(2) * TextLengthBmpSize = BmpHeight * BmpWidth * 3For I = BmpHeight To 1 Step -1For J = 0 To TextLength -1 Step +1TextInfo = GetTextData(J)FontData = Split(TextInfo(5)," ")(I)For K = 1 To TextInfo(2) Step +1If GetRnd(1,99) < YawpCount ThenBmpData = BmpData & GetColor(GetColorString(YawpColor))ElseBmpData = BmpData & BmpColor(TextInfo(0),TextInfo(1))(Mid(FontData,K,1))End IfNextNextNextEnd FunctionPublic Function Write()FileHeader()SetBmpData()SetBmpHead BmpSize,BmpWidth,BmpHeightResponse.BinaryWrite BmpHeadResponse.BinaryWrite BmpDataSession(SessionName) = SessionStringEnd Function
End Class
Dim Bmp
Set Bmp = New CAMXAM_COM_RndCodeBmpBmp.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 = 6  '验证码长度Bmp.BackColor = "#FFFFFF" '背景颜色,多个颜色用"," 分隔Bmp.TextColor = "#FF0000,#00FF00,#0000FF"    '文字颜色,多个颜色用"," 分Bmp.YawpColor = "#000000" '噪波点颜色,多个颜色使用"," 分隔Bmp.YawpCount = 10   '噪波点比例 0-100Bmp.Write()
%>

ASP生成BMP验证码图片相关推荐

  1. struts2生成随机验证码图片

    之前想做一个随机验证码的功能,自己也搜索了一下别人写的代码,然后自己重新用struts2实现了一下,现在将我自己实现代码贴出来!大家有什么意见都可以指出来! 首先是生成随机验证码图片的action: ...

  2. 前端怎样获取后端生成的验证码图片,并且点击图片的时候改变验证码

    直接放在<img src="文件名"/> 就可以了,不用去调接口之类的 点击的时候改变验证码图片: 改一下src属性,url?一个随机数(防止缓存) <a hre ...

  3. python用*号输出字母c的图案_第1.6题:使用Python生成字母验证码图片

    题目来自:Python 练习册.题目1.6:使用 Python 生成类似于下图中的字母验证码图片 查看更多于本人博客:李飞阳 参考代码 我们用随机颜色填充背景,再画上文字,最后对图像进行模糊,得到验证 ...

  4. mysql生成随机验证码_生成随机验证码图片

    所有汉字的Unicode码范围[\u4e00-\u9fa5] import java.awt.Color; import java.awt.Font; import java.awt.Graphics ...

  5. 小白都看得懂的使用Python生成随机验证码图片,以及后续优化方案

    环境:Anaconda3-2020.02 首先我们分解一下需要做什么: 生成随机的字母字符串 生成生成随机的背景色 生成随机的字体颜色 把随机的字符串用随机的颜色渲染,然后放到一块随机的背景色上面,基 ...

  6. php随机生成验证图片,php 生成随机验证码图片代码

    /** 默认首页 **/ class DefaultController extends AppController { public function index() { $len = 5; $st ...

  7. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

  8. python绘制动态模拟图-Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...

  9. python生成字母图片_Python 模拟动态产生字母验证码图片功能

    模拟动态产生字母验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image ...

最新文章

  1. 格子大法与换入换出分析
  2. 人生苦短:Python里的17个“超赞操作
  3. rdb和aof优势劣势
  4. es6 --- 使用yield*命令遍历完全二叉树
  5. 睡眠音频分割及识别问题(一)
  6. 细数那些年我用过的前端开发工具
  7. Flutter 动态饼状图 让你的APP中无聊的统计图动起来 挻舒适的感觉瞬间提升一个档次 -深夜创作
  8. 《天天数学》连载45:二月十四日
  9. Eclipse 常用技巧及常见问题解决
  10. 重装也无法修复此计算机,遇到Win7系统崩溃无法修复的情况怎么办
  11. java 字符串常用函数_Java学习笔记35:Java常用字符串操作函数
  12. android解析JSON数组
  13. 数学建模层次分析法例题及答案_【热门推荐】影响力意志力创新力、数学建模简明教程...
  14. iOS 代码命名规范 及Android 代码命名规范(2)Android
  15. php去除中文以外的特殊字符,php从文本中去除空格、特殊字符的4种情况
  16. 吴伯凡-认知方法论-真真切切的感觉
  17. UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
  18. 报错 No active profile set, falling back to default profiles: default 解决
  19. InnoDB: auto-extending data file ./ibdata1 is of a different size 0 pages (rounded down to MB) than
  20. RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received

热门文章

  1. iOS开发 --- app 投诉维权
  2. 无法连接到本地计算机上,Windows无法启动VMware USB Arbitration Service服务(位于本地计算机上)。解决方法...
  3. 学习vue中v-on的内容
  4. 这么可爱的彩虹屁老婆,真的不想“娶”一个放桌面上吗?
  5. java口袋精灵怎么变强,口袋精灵OL强势来袭 教你打造最强精灵
  6. 笔记本加装内存条的经历
  7. 美食杰-菜谱大全(一)
  8. Adobe Acrobat Reader DC 离线安装包
  9. 谁将成为2007年中国互联网的下一代新主角
  10. 怎么输入MathType不等号