科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件256色BMP图片验证码识别脚本

256色BMP图片验证码识别脚本

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文提供256色BMP图片验证码识别脚本代码片段,可以是大家了解到:BMP的文件结构,存储方式和对于简单的图像验证码如何进行识别处理。

作者:walkerlee 来源:51cto.com整理 2007年9月15日

关键字: BMP 验证码 脚本 软件

  • 评论
  • 分享微博
  • 分享邮件

您可以通过本代码片段,了解到:

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

demo.php
<?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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章