扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
您可以通过本代码片段,了解到:
1.BMP的文件结构,存储方式。
2.对于简单的图像验证码如何进行识别处理。
当然,您也可以使用它完成对一些简单的符合条件的图片验证码进行识别处理。
文件说明:
demo.php 演示脚本
NEATBMP256ValidPic.class.php 相关类脚本
readme.txt 本文件
3721.bmp 3721的图像验证码
csdn.bmp CSDN的图像验证码
demo.php 中已经做了具体的演示。其他部分请自行参考 NEATBMP256ValidPic.class.php 。
演示:http://www.neatstudio.com/validpic/demo.php
下载:20058262588110.rar
<?php /** * DEMO for Class NEATBMP256ValidPic * walkerlee of NEATSTUDIO 2005-8-22 */ // 包含处理类 include_once( 'NEATBMP256ValidPic.class.php' ); // 实例化 $bmp = new NEATBMP256ValidPic; // 设置文件 $bmp->SetFile( '3721.bmp' ); $bmp->SetCodeColor( array( 1 ) ); $bmp->SetFrontColor( '#FFFFFF' ); $bmp->SetBackColor( '#3399CC' ); // 打开位图文件 $bmp->Open(); /////////////////////////////////////////////////////////////////////////////// // 例一 绘制位图数据偏移坐标图 ( 存储模式 ) /** * 绘制位图数据偏移坐标图 * 因为BMP存储数据时候,是把图像反着存储的,所以看到的是一个倒着的图像. */ echo "<p>例一 : 存储模式 ( 一般用于寻找数据偏移位置 ) </p>"; $bmp->Draw(); /////////////////////////////////////////////////////////////////////////////// // 例二 绘制位图数据偏移坐标图 ( 观察模式 ) // 现在我们用查看模式来重新读取一次数据 $bmp->GetData( 'pop' ); /** * 这时候绘制出的数据偏移坐标图则是我们用眼睛所观察到的正置的图像. */ echo "<p>例二 : 观察模式 ( 一般用于观察 )</p>"; $bmp->Draw(); /////////////////////////////////////////////////////////////////////////////// // 例三 绘制位图数据偏移坐标图 ( 颜色代码模式 ) // 设置绘图方式为颜色代码显示方式 $bmp->SetDrawMod( 'source' ); // 绘制 echo "<p>例三 : 颜色代码模式 ( 一般用于寻找验证码颜色 ) </p>"; $bmp->Draw(); /////////////////////////////////////////////////////////////////////////////// // 例四 识别3721验证码 ( 通过逐一设置参数的方式 ) // 码表 $N3721_CODE[0] = "00011000001111000110011011000011110000111100001111000011011001100011110000011000"; $N3721_CODE[1] = "00011000001110000111100000011000000110000001100000011000000110000001100001111110"; $N3721_CODE[2] = "00111100011001101100001100000011000001100000110000011000001100000110000011111111"; $N3721_CODE[3] = "01111100110001100000001100000110000111000000011000000011000000111100011001111100"; $N3721_CODE[4] = "00000110000011100001111000110110011001101100011011111111000001100000011000000110"; $N3721_CODE[5] = "11111110110000001100000011011100111001100000001100000011110000110110011000111100"; $N3721_CODE[6] = "00111100011001101100001011000000110111001110011011000011110000110110011000111100"; $N3721_CODE[7] = "11111111000000110000001100000110000011000001100000110000011000001100000011000000"; $N3721_CODE[8] = "00111100011001101100001101100110001111000110011011000011110000110110011000111100"; $N3721_CODE[9] = "00111100011001101100001111000011011001110011101100000011010000110110011000111100"; // 设置验证码颜色,可以是多个颜色 $bmp->SetCodeColor( array( 1 ) ); // 设置验证码字串数目 $bmp->SetCodeTotal( 5 ); // 设置验证码字符宽度 $bmp->SetFontWeight( 8 ); // 设置验证码字符高度 $bmp->SetFontHeight( 10 ); // 设置验证码字符间隔距离 $bmp->SetFontSpace( 1 ); // 设置第一个验证字符的左上数据偏移 $bmp->SetOffSet( 3188 ); // 设置对比用码表 $bmp->SetCollateCode( $N3721_CODE ); // 识别处理 $code = $bmp->Valid(); echo "<p>例四 识别3721验证码 ( 通过逐一设置参数的方式 )</p>"; echo "<img src='3721.bmp'> 识别结果:" . $code; // 关闭文件 $bmp->Close(); /////////////////////////////////////////////////////////////////////////////// // 例五 识别CSDN验证码 ( 通过装载配置参数的方式 ) // 相关参数 $CSDN_CODE[0] = "001111000100001010000001100000011000000110000001100000011000000110000001100000010100001000111100"; $CSDN_CODE[1] = "000010000000100000111000000010000000100000001000000010000000100000001000000010000000100000111110"; $CSDN_CODE[2] = "001111000100001000000001000000010000000100000010000001000000100000010000001000000100000001111111"; $CSDN_CODE[3] = "001111000100001000000001000000010000001000011100000000100000000100000001000000010100001000111100"; $CSDN_CODE[4] = "000000100000011000001010000100100010001001000010100000101111111100000010000000100000001000000010"; $CSDN_CODE[5] = "011111110100000001000000010000000111110000000010000000010000000100000001000000010100001000111100"; $CSDN_CODE[6] = "000111100010000001000000100000001011110011000010100000011000000110000001100000010100001000111100"; $CSDN_CODE[7] = "011111110000000100000010000000100000010000000100000010000000100000010000000100000010000000100000"; $CSDN_CODE[8] = "001111000100001010000001100000010100001000111100010000101000000110000001100000010100001000111100"; $CSDN_CODE[9] = "001111000100001010000001100000011000000110000001010000110011110100000001000000100000010001111000"; $CSDN = array( 'CodeColor' => array( 45 ), 'CodeTotal' => 4, 'FontWeight' => 8, 'FontHeight' => 12, 'FontSpace' => 1, 'OffSet' => 1601, 'CollateCode' => $CSDN_CODE, ); // 设置文件 $bmp->SetFile( 'csdn.bmp' ); // 装载参数 $bmp->LoadConfig( $CSDN ); // 把数据初始化 $bmp->Init(); // 打开位图文件 $bmp->Open(); // 识别处理 $code = $bmp->Valid(); // 关闭文件 $bmp->Close(); echo "<p>例五 识别CSDN验证码 ( 通过装载配置参数的方式 )</p>"; echo "<img src='csdn.bmp'> 识别结果:" . $code; ?> |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者