<?php
// author email: ugg.xchj@gmail.com
// 本代码仅供学习参考,不提供任何技术保证。
// 切勿使用本代码用于非法用处,违者后果自负。
include_once("files.php");
class valite
{
public function setImage($Image)
{
$this->ImagePath = $Image;
}
public function getData()
{
return $this->data;
}
public function study($info)
{
// 做成字符串
$data = array();
$i = 0;
foreach($this->data as $key => $value)
{
$data[$i] = "";
foreach($value as $skey => $svalue)
{
$data[$i] .= implode("",$svalue);
}
if(strlen($data[$i]) > $maxfontwith)
++$i;
}
if(count($data) != count($info))
{
// echo count($data)."\n";
// print_r($data);
// echo count($info)."\n";
echo "设置数据库数据出错";
print_r($data);
return false;
}
// 设置N级匹配模式
foreach($info as $key => $value)
{
if(isset($this->Keys[0][$value])){
// print_r($value);
$percent=0.0;
similar_text($this->Keys[0][$value], $data[$key],$percent);
// print_r($percent);
// print_r(" \n");
if(intval($percent) < 96)
{
$i=1;
$OK = false;
while(isset($this->Keys[$i][$value]))
{
$percent=0.0;
// print_r($value);
similar_text($this->Keys[$i][$value], $data[$key],$percent);
// print_r($percent);
// print_r(" \n");
if(intval($percent) > 96){
$OK = true;
break;
}
++$i;
}
if(!$OK){
// while(!isset($this->Keys[$i++][$value])){
// print_r($i);
// print_r($i);
// print_r(" \n");
$this->Keys[$i][$value] = $data[$key];
// $i++;
// }
}
}
}else{
$this->Keys[0][$value] = $data[$key];
}
}
return true;
}
public function getResult()
{
return $this->DataArray;
}
public function getHec()
{
$res = imagecreatefromjpeg($this->ImagePath);
$size = getimagesize($this->ImagePath);
$data = array();
for($i=0; $i < $size[1]; ++$i)
{
// echo "$i R G B\n";
for($j=0; $j < $size[0]; ++$j)
{
$rgb = imagecolorat($res,$j,$i);
$rgbarray = imagecolorsforindex($res, $rgb);
// echo " ".$rgbarray['red']." ";
// echo $rgbarray['green']." ";
// echo $rgbarray['blue']." \n";
// /*
if($rgbarray['red'] > 120 &&( $rgbarray['green']<80
|| $rgbarray['blue'] < 80))
{
$data[$i][$j]=1;
}else{
$data[$i][$j]=0;
}
// */
}
}
// 如果1的周围数字不为1,修改为了0
for($i=0; $i < $size[1]; ++$i)
{
for($j=0; $j < $size[0]; ++$j)
{
$num = 0;
if($data[$i][$j] == 1)
{
// 上
if(isset($data[$i-1][$j])){
$num = $num + $data[$i-1][$j];
}
// 下
if(isset($data[$i+1][$j])){
$num = $num + $data[$i+1][$j];
}
// 左
if(isset($data[$i][$j-1])){
$num = $num + $data[$i][$j-1];
}
// 右
if(isset($data[$i][$j+1])){
$num = $num + $data[$i][$j+1];
}
// 上左
if(isset($data[$i-1][$j-1])){
$num = $num + $data[$i-1][$j-1];
}
// 上右
if(isset($data[$i-1][$j+1])){
$num = $num + $data[$i-1][$j+1];
}
// 下左
if(isset($data[$i+1][$j-1])){
$num = $num + $data[$i+1][$j-1];
}
// 下右
if(isset($data[$i+1][$j+1])){
$num = $num + $data[$i+1][$j+1];
}
}
if($num == 0){
$data[$i][$j] = 0;
}
}
}
$this->DataArray = $data;
$this->ImageSize = $size;
}
public function run()
{
$result="";
// 做成字符串
// 做成字符串
$data = array();
$i = 0;
foreach($this->data as $key => $value)
{
$data[$i] = "";
foreach($value as $skey => $svalue)
{
$data[$i] .= implode("",$svalue);
}
if(strlen($data[$i]) > $maxfontwith)
++$i;
}
// 进行关键字匹配
foreach($data as $numKey => $numString)
{
// print_r($numString);
$max=0.0;
$num = 0;
foreach($this->Keys as $key => $value)
{
$FindOk = false;
// print_r($value);
foreach($value as $skey => $svalue)
{
// print_r($svalue);
$percent=0.0;
similar_text($svalue, $numString,$percent);
// print_r($percent);
// echo " ";
if(intval($percent) > $max)
{
$max = $percent;
$num = $skey;
if(intval($percent) > 96){
$FindOk = true;
break;
}
}
}
if($FindOk)
break;
}
// echo "\n max=";
// echo $max;
// echo "\n";
// echo $num."\n";
$result.=$num;
}
// 查找最佳匹配数字
return $result;
}
public function bmp2jpeg($file){
$res = $this->imagecreatefrombmp($file);
imagejpeg($res,$file.".jpeg");
}
public function filterInfo()
{
$data=array();
$num = 0;
$b = false;
$Continue = 0;
$XStart = 0;
// X 坐标
for($i=0; $i<$this->ImageSize[0]; ++$i)
{
// Y 坐标
for($j=0; $j<$this->ImageSize[1]; ++$j)
{
if($this->DataArray[$j][$i] == "1")
{
$b = true;
++$Continue;
break;
}else{
$b = false;
}
}
if($b == true)
{
for($jj = 0; $jj < $this->ImageSize[1]; ++$jj)
{
$data[$num][$jj][$XStart] = $this->DataArray[$jj][$i];
}
++$XStart;
}else{
if($Continue > 0){
$XStart = 0;
$Continue = 0;
++$num;
}
}
}
// 粘连字符分割
$inum = 0;
for($num =0; $num < count($data); ++$num)
{
$itemp = 5;
$str = implode("",$data[$num][$itemp]);
// 超过标准长度
if(strlen($str) > $this->maxfontwith)
{
$len = (strlen($str)+1)/2;
$flen = strlen($str);
$ih = 0;
// $iih = 0;
foreach($data[$num] as $key => $value)
{
$ix = 0;
$ixx = 0;
foreach($value as $skey=>$svalue)
{
if($skey < $len)
{
$this->data[$inum][$ih][$ix] = $svalue;
++$ix;
}
if($skey > ($flen-$len-1))
{
$this->data[$inum+1][$ih][$ixx] = $svalue;
++$ixx;
}
}
++$ih;
}
++$inum;
}else{
$i = 0;
foreach($data[$num] as $key => $value){
$this->data[$inum][$i] = $value;
++$i;
}
}
++$inum;
}
// 去掉0数据
for($num = 0; $num < count($this->data); ++$num)
{
if(count($this->data[$num]) != $this->ImageSize[1])
{
echo "分割字符错误";
die();
}
for($i=0; $i < $this->ImageSize[1]; ++$i)
{
$str = implode("",$this->data[$num][$i]);
$pos = strpos($str, "1");
if($pos === false)
{
unset($this->data[$num][$i]);
}
}
}
}
public function Draw()
{
for($i=0; $i<$this->ImageSize[1]; ++$i)
{
echo implode("",$this->DataArray[$i]);
echo "\n";
}
}
public function imagecreatefrombmp($file)
{
global $CurrentBit, $echoMode;
$f=fopen($file,"r");
$Header=fread($f,2);
if($Header=="BM")
{
$Size=$this->freaddword($f);
$Reserved1=$this->freadword($f);
$Reserved2=$this->freadword($f);
$FirstByteOfImage=$this->freaddword($f);
$SizeBITMAPINFOHEADER=$this->freaddword($f);
$Width=$this->freaddword($f);
$Height=$this->freaddword($f);
$biPlanes=$this->freadword($f);
$biBitCount=$this->freadword($f);
$RLECompression=$this->freaddword($f);
$WidthxHeight=$this->freaddword($f);
$biXPelsPerMeter=$this->freaddword($f);
$biYPelsPerMeter=$this->freaddword($f);
$NumberOfPalettesUsed=$this->freaddword($f);
$NumberOfImportantColors=$this->freaddword($f);
if($biBitCount<24)
{
$img=imagecreate($Width,$Height);
没有合适的资源?快使用搜索试试~ 我知道了~
php实现验证码的识别(中级篇)
共23个文件
bmp:14个
jpeg:3个
php:3个
1星 需积分: 35 7 下载量 198 浏览量
2016-10-25
15:31:57
上传
评论 1
收藏 128KB RAR 举报
温馨提示
这是我写的php实现验证码的识别(URL:http://download.csdn.net/source/1063621)的继续,这个版本的识别码,只要稍加训练就可以实现上个版本的功能,这个php实现验证码中级篇,增加二值化去杂点的操作,解决两个字符粘连问题,可以识别旋转字符,并且具有一定的学习功能,并提供了bmp到jpeg的转换方法,目前这个方案应该可以应付90%的互联网验证码识别工作。这个版本不能直接应用商业化,只是提供一种方法,你可以根据自己的需求修改。另外:此代码切勿用于非法用处,违者引起的一切后果自负。
资源推荐
资源详情
资源评论
收起资源包目录
123.rar (23个子文件)
ccb
zacfd.bmp 7KB
queaa.bmp 7KB
wncdx.bmp 7KB
nmndu.bmp 7KB
n6wnw.bmp 7KB
ydndw.bmp.jpeg 2KB
files.php 1KB
4dnq.bmp.jpeg 2KB
r7dyq.bmp 7KB
Valite.php 17KB
Valite.php.bak 17KB
ec6uu.bmp.jpeg 2KB
Thumbs.db 54KB
quzpd.bmp 7KB
hw6kg.bmp 7KB
pwrkk.bmp 7KB
mwq7a.bmp 7KB
4dnq.bmp 7KB
ec6uu.bmp 7KB
test.php 1KB
anfdd.bmp 7KB
ydndw.bmp 7KB
test.php.bak 1KB
共 23 条
- 1
资源评论
- pengyikeji2017-10-14经测试不可用。
惺惺作态
- 粉丝: 75
- 资源: 99
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功