资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
.版本 2 .支持库 BmpOperate .支持库 internet .支持库 eImgConverter .程序集 窗口程序集 1 .程序集变量 aa, 位图 .子程序 _按钮 1_被单击 编辑框 1.内容 “” 清空内容 编辑框 2.内容 “” 清空内容 识别程序 () .子程序 识别程序 .局部变量 图片组, 位图, , “6“ .局部变量 数据组, 文本型, , “6“ .局部变量 a, 位图 .局部变量 b, 位图 .局部变量 n, 整数型, , , 计次用 .局部变量 x, 整数型 .局部变量y,整数型 .局部变量 原图宽, 整数型 .局部变量 原图高, 整数型 .局部变量 图片框, 图片框 .局部变量 测试结果, 文本型 .局部变量 c, 位图 原图宽 60 原图的高和宽,单位是像索,用画图软件得到的,别的途径也可以得到 原图高 10 写到文件(“asdf.bmp”,HTTP读文件 (“ 读取网上的一个动 态验证码 转换到 BMP (“asdf.bmp”,“asdf1.bmp”)复制一个 BMP 文件用来操作, a.载入数据 (读入文件 (“asdf1.bmp”) 将 ASDF1 读入到位图变量a里 c.载入数据 (读入文件 (“asdf.bmp”) 图片框 9.图片 c.取位图数据 () .计次循环首 (原图高 2, y) 去除背景色, (如果颜色 13155000 大于当前点的颜色,那 就把这一点变成白色) .计次循环首 (原图宽 2, x) .如果 (a.取某点颜色 (x 1, y 1) 13155000) a.置某点颜色 (x 1, y 1, #黑色) .否则 a.置某点颜色 (x 1, y 1, #白色) .如果结束 .计次循环尾 () .计次循环尾 () -切割 n 0初始化变量 x 0 y 0 .计次循环首 (6, n) 因为是六块所以要处理六次 图片组 n.创建 (6, 原图高, a.取位深度 (), #白色) 图片组存放变量加入一个宽 6 高 10 的空白图片备用 6 是一个字的实际有颜色的宽度 a.复制到 (原图宽 6 n 8, 0, 6, 原图高, 图片组 n, 0, 0, ) 讲算功式,仔细研 究一下吧,第一个参数,原图除以六得到每个字的占用宽度,再剩以现在正在进行的是第几 个切片 n,再减去 八 (单个字连同左右两边的白边所占用的宽度中 10白边宽度为 2, 10-2= 八,就是取当前切片的左边第三个像索开始)第三个参数是要取的宽度,因为这个验证码实 际单字占用的宽度就是 6,第五个参数 就是把这个切出来的切片 存放到图片组数组变量的 第 n 个位置 图片框 图片框选择 (n) 根据变量 n 来通过图片框选择子程序, 返回一个框片框 如果 n=1 那么就返回图片框 1 图片框.图片 图片组 n.取位图数据 ()将切出来的切片显示到图片框里,注意, 图片框是个变量, .计次循环尾 () .计次循环首 (6, n) 对六个切片进行每个像索点的比对,分析这个环节,只是把每个 点的颜色值取出来,如果是白色就记一个 0 如果是黑色就记一个 1 然后再调用 比对程序 进行比对,并返回结果,比对,请看“比对程序”这个子程序 .计次循环首 (6, x) .计次循环首 (原图高, y) .如果 (图片组 n.取某点颜色 (x 1, y 1) #黑色) 数据组 n 数据组 n “1” .否则 数据组 n 数据组 n “0” .如果结束 .计次循环尾 () .计次循环尾 () 编辑框1.内容 编辑框1.内容 “第 ” 到文本 (n) “位的特征串:” 数据 组 n #换行符 这一行用来输出当前取得的特征串的文本,以便大家更好的理解 编辑框 2.内容 编辑框 2.内容 到文本 (比对程序 (数据组 n) .计次循环尾 () 图片框 7.图片 a.取位图数据 () .子程序 _启动窗口_创建完毕 .子程序 图片框选择, 图片框 .参数 a, 整数型, , 第几个 .如果 (a 1) 返回 (图片框 1) .否则 .如果 (a 2) 返回 (图片框 2) .否则 .如果 (a 3) 返回 (图片框 3) .否则 .如果 (a 4) 返回 (图片框 4) .否则 .如果 (a 5) 返回 (图片框 5) .否则 .如果 (a 6) 返回 (图片框 6) .否则 .如果 (a 0) 返回 (图片框 7) .否则 返回 (图片框 7) .如果结束 .如果结束 .如果结束 .如果结束 .如果结束 .如果结束 .如果结束 .子程序 _编辑框 1_内容被改变 .子程序 比对程序, 整数型 .参数 a, 文本型, , 传弟过来的 .局部变量 b, 整数型 .局部变量 b2, 整数型 .局部变量 c, 文本型, , “10“, 用来比对的 .局部变量 n, 整数型, , , 不同率 以下的数子串都是在写程序的时候特意抓取的,可以理解成“指纹”,每个数字都不会相同 的, 因为这个网站的验证码加入了一些扰乱识别的随机置 位置 的小黑点, 所以并不是每个 人取得的 特征串 都一样,但是据我观察发现,不会超过五个不同点。 。 。 。 c1 “011111111010000000011000000001100000000110000010010111111110”0先将 这些 特征串 装入数组变量c里以便下面的循环好调用 c2 “010000000101000000111111111111000000000100000000010000000000”1 c3 “011000001110100001011000001001100001000110001000010111000011” 2 c4 “011000011010000000011000100001100010000111010100010110001110” 3 c5 “000011100000010010000010001001111111111100000010010001001001”4 c6 “111110011010001000011001000001100100000110010000011000111110” 5 c7 “001111111001000100111100100001100010000110001000010100011110” 6 c8 “111000000010000000001000011111100110000011100000001000000000” 7 c9 “011100111010001100011000100001100010000110001100010111001110” 8 c10 “011110001010000100011000010001100001000111001000100011111100” 9 .计次循环首 (10, b) 循环 10 次 把每一个数字先准备让他 10 次循环。注意这里说的是准 备,就是有可能比对到最后一个才有成功的所以要准备 10 次 n 0 .计次循环首 (60, b2)进行 60 个像索点的比对,上面的特征串就是 60 位的 .如果真 (取文本中间 (a, b2, 1)取文本中间 (c b, b2, 1) 把特征串里的数字 取出来一位,与传递过来的切片里取出来的特征串进行比对,如果不同的话,n=n+1 也就 是说记录下一次不匹配的记录 n n 1 .如果真结束 .如果真 (n 20) 如果不同的颜色达到 20 就跳出, 说明不匹配, 并跳过这个特 征串的对比,这句话可以有效节约时间,不用比对完 60 次 跳出循环 () .如果真结束 .计次循环尾 () .如果真 (n 6) 如果比对结束后,错的次数小于 6 那就可以确定是同一个数字, 所以现在可以返回这个数字了 b b 1 跳出循环 () 返回 (b) .如果真结束 .计次循环尾 () .如果 (b 100)这句话,不知道高手有没有办法解决啊,这句是费话,因为子程序如 果 定义了返回值的时候你的子程序如果不是所有分值都有最终返回值的话程序会报错,所 以我在这写了一句费话,b 永远不可能大于 100 的,只是用来应付易语言的,无奈 返回 (9) .否则 返回 (b) .如果结束
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号