<?php
/*** 电话号码识别.*/class gjPhone{//protected $imgPath;//图片路径    protected $imgSize;//图片大小protected $hecData;//分离后数组protected $horData;//横向整理的数据protected $verData;//纵向整理的数据/*** 颜色分离转换...** @param unknown_type $path* @return unknown*/public function getHec($imgPath){   $res = @imagecreatefromjpeg($imgPath);if($res) $res = @imagecreatefromjpeg($imgPath);$size = @getimagesize($imgPath);     for($i=0; $i < $size[1]; ++$i){   for($j=0; $j < $size[0]; ++$j){$rgb = @imagecolorat($res,$j,$i);$rgbarray = @imagecolorsforindex($res, $rgb);             if($rgbarray['red'] < 125 || $rgbarray['green']<125 || $rgbarray['blue'] < 125){echo  $data[$i][$j]=1;}else{echo $data[$i][$j]=0;}}echo "\r\n";}echo "\r\n";$this->imgSize = $size;$this->hecData = $data;}//获取文件的扩展名public function extend_file($imgPath){$extend = pathinfo($imgPath);$extend = strtolower($extend['extension']);return $extend;
}/*** 颜色分离后的数据横向整理...** @return unknown*/
public function magHorData()
{   $data = $this->hecData;$size = $this->imgSize;    $z = 0;for($i=0; $i<$size[1]; ++$i)   {if(in_array('1',$data[$i])){$z++;for($j=0; $j<$size[0]; ++$j){   if($data[$i][$j] == '1'){                    echo  $newdata[$z][$j] = 1;}else{echo  $newdata[$z][$j] = 0;}}   echo "\r\n";        }    }echo "\r\n";return $this->horData = $newdata;
}
/*** 整理纵向数据...** @return unknown*/
public function magVerData($newdata){$size = $this->imgSize;for ($i=0;$i<$size[0];++$i){for($j=1;$j<$size[1];++$j){$ndata[$i][$j] = $newdata[$j][$i];$tmp999 .= $newdata[$j][$i];}if($tmp999<1){echo "\r\n";$tmp999 = '';}else{echo $tmp999;$tmp999 = '';}}$sum = count($ndata);$c = 0;for ($a=0;$a<$sum;$a++){$value = $ndata[$a];if(in_array(1,$value)){ $ndatas[$c] = $value;$c++;}elseif(is_array($ndatas)){$b = $c-1;if(in_array(1,$ndatas[$b])){$ndatas[$c] = $value;$c++;}}        }return $this->verData = $ndatas;}
/*** 显示电话号码...** @return unknown*/
public function showPhone($ndatas){$phone = null;$d = 0;if(!is_array($ndatas)) return '';foreach ($ndatas as $key => $val){if(in_array(1,$val)){foreach ($val as $k => $v){$ndArr[$d].=$v;}//echo $ndArr[$d]."<br>";}        if(!in_array(1,$val)){$d++;}}foreach ($ndArr as $key01 =>$val01){$phone .= $this->initData($val01);}   return $phone;
}/*** 初始数据...** @param unknown_type $numStr* @return unknown*/public function initData($numStr){$result = null;$data = array('-'=>'0000100000001000000010000000100000001000','0'=>'0111111010000001100000011000000101111110','1'=>'0100000110000001111111110000000100000001','2'=>'1000001110000101100010011001000101100001','3'=>'1000000110010001100100011001000101101110','4'=>'0000110000110100010001001111111100000100','5'=>'11110001100100011001000110001110','6'=>'0111111010001001100100011001000110001110','7'=>'1000001110001100100100001010000011000000','8'=>'0110111010010001100100011001100101101110','9'=>'0111000110001001100010011001000101111110');foreach ($data as $key => $val){similar_text($numStr,$val,$pre);if($pre>95){//相似度90%以上$result = $key;break;}}return $result;}//处理图片public function Climg($imgPath){$this->getHec($imgPath);$horData = $this->magHorData();$verData = $this->magVerData($horData);$phone = $this->showPhone($verData);return $phone;}//检查远程文件static public  function url_exists($url) {if(!empty($url)){ $head=@get_headers($url);if(!empty($head)) {if(in_array('Content-Type: image/jpeg', $head)){return true;}else return false;}else{return false;}}}
}
//==============================function vcurl($url){//发送数据$tmpInfo = '';$cookiepath = getcwd().'./'.$cookiejar;$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);curl_setopt($curl, CURLOPT_AUTOREFERER, 1);curl_setopt($curl, CURLOPT_TIMEOUT, 100);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$tmpInfo = curl_exec($curl);if (curl_errno($curl)) {echo '<pre><b>错误:</b><br />'.curl_error($curl);}curl_close($curl);return $tmpInfo;}function GrabImage($url){ if($url == ""){return false;} $filename="img.bmp";@unlink($filename);ob_start(); readfile($url);ob_end_clean(); $size = strlen($url); $fp2 = fopen($filename , "a"); fwrite($fp2, $url); fclose($fp2); return $filename; } function bmp2gd($src, $dest = false) {if(!($src_f = fopen($src, "rb"))) return false;if(!($dest_f = fopen($dest, "wb"))) return false;$header = unpack("vtype/Vsize/v2reserved/Voffset", fread($src_f, 14));$info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", fread($src_f, 40));extract($info);extract($header);if($type != 0x4D42) return false;$palette_size = $offset-54;$ncolor = $palette_size/4;$gd_header = "";$gd_header .= ($palette_size == 0) ? "\xFF\xFE" : "\xFF\xFF";$gd_header .= pack("n2", $width, $height);$gd_header .= ($palette_size == 0) ? "\x01" : "\x00";if($palette_size) $gd_header .= pack("n", $ncolor);$gd_header .= "\xFF\xFF\xFF\xFF";fwrite($dest_f, $gd_header);if($palette_size) {$palette = fread($src_f, $palette_size);$gd_palette = "";$j = 0;while($j < $palette_size) {$b = $palette{$j++};$g = $palette{$j++};$r = $palette{$j++};$a = $palette{$j++};$gd_palette .= "$r$g$b$a";}$gd_palette .= str_repeat("\x00\x00\x00\x00", 256-$ncolor);fwrite($dest_f, $gd_palette);}$scan_line_size = (($bits * $width) + 7) >> 3;$scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03) : 0;for($i = 0, $l = $height -1; $i < $height; $i++, $l--) {fseek($src_f, $offset + (($scan_line_size + $scan_line_align) * $l));$scan_line = fread($src_f, $scan_line_size);if($bits == 24) {$gd_scan_line = "";$j = 0;while($j < $scan_line_size) {$b = $scan_line{$j++};$g = $scan_line{$j++};$r = $scan_line{$j++};$gd_scan_line .= "\x00$r$g$b";}} else if($bits == 8) {$gd_scan_line = $scan_line;} else if($bits == 4) {$gd_scan_line = "";$j = 0;while($j < $scan_line_size) {$byte = ord($scan_line{$j++});$p1 = chr($byte >> 4);$p2 = chr($byte & 0x0F);$gd_scan_line .= "$p1$p2";}$gd_scan_line = substr($gd_scan_line, 0, $width);} else if($bits == 1) {$gd_scan_line = "";$j = 0;while ($j < $scan_line_size) {$byte = ord($scan_line{$j++});$p1 = chr((int) (($byte & 0x80) != 0));$p2 = chr((int) (($byte & 0x40) != 0));$p3 = chr((int) (($byte & 0x20) != 0));$p4 = chr((int) (($byte & 0x10) != 0));$p5 = chr((int) (($byte & 0x08) != 0));$p6 = chr((int) (($byte & 0x04) != 0));$p7 = chr((int) (($byte & 0x02) != 0));$p8 = chr((int) (($byte & 0x01) != 0));$gd_scan_line .= "$p1$p2$p3$p4$p5$p6$p7$p8";}$gd_scan_line = substr($gd_scan_line, 0, $width);}fwrite($dest_f, $gd_scan_line);}fclose($src_f);fclose($dest_f);return true;
}function imagecreatefrombmp($filename) {$tmp_name = tempnam("tmp", "BMP");if(bmp2gd($filename, $tmp_name)) {$img = imagecreatefromgd($tmp_name);unlink($tmp_name);return $img;}return false;
}//#######################################################################################################################################
$imgurl = 'http://www.gqsoso.com/Include/gq.EnStrToImg.asp?Original=80%2C83%2C87%2C73%2C93%2C215%2C207%2C255%2C462%2C57%2C72%2C52';
$imgurl = $_GET['url'];echo $imgurl."\r\n";$imgcontent =  vcurl($imgurl);
$imgpath = GrabImage($imgcontent);/* BMP -> JPRG */
$bmp = imagecreatefrombmp($imgpath);
imagejpeg($bmp, 'img.jpg');$size = getimagesize('img.jpg');
print_r($size);
echo "\r\n";$gjPhone = new gjPhone;
$Label = $gjPhone->Climg('img.jpg');@unlink('img.jpg');
@unlink('img.bmp');//#######################################################################################################################################//ob_clean();
echo "<hr>".$Label.'<br>';
?>

PHP的电话号码识别相关推荐

  1. 推荐1款免费在线OCR文字识别服务,识别特别准确!

    这款在线文字识别转换有别于其他的软件,罕见地可以保留识别格式,如果你选择识别结果是PDF,那么格式将会是非常精确地保留下来,如果你选择识别结果是WORD,那么系统将会为你自动排版到最优格式,总之一句话 ...

  2. android autolink识别错误,TextView autoLink=phone 在8.1机器上无效

    前言 某天,QA给我提了一个Bug,说是包裹物流追踪的电话不能自动识别了.正常情况如下图所示: 物流追踪 在8.1的机器上,TextView突然不能自动识别电话号码了. 1.电话号码识别 Androi ...

  3. php渲染页面简单例子,微信小程序如何渲染html内容(示例讲解)

    本篇文章给大家带来的内容是关于微信小程序如何渲染html内容(示例讲解),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 最近又做了一个新的小程序关于物流订单查询 遇到了一个小问题:数 ...

  4. 微信 小程序 python 渲染_微信小程序渲染html内容

    最近又做了一个新的小程序关于物流订单查询欢迎来体验 遇到了一个小问题:数据中返回电话号码的字符串识别出来并且高亮和可以绑定事件.比如数据中包含您的派送员黄xx正在派件,电话:137xxxx41460已 ...

  5. Craigslist模式在中国如何复制?中国特色的差异化在哪里?,互联网营销

    像大多数回国投身互联网创业的人一样,赶集网创始人杨浩涌在2004年底的打算,是把自己当时用得正顺手的网站Craigslist 复制到中国去.这个网站类似于无需预先登录的BBS,用户能在上面发帖买卖二手 ...

  6. 学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 文末附上详细的 ...

  7. 对于跳过Google应用SetupWizard.apk以及其他设备软件包名

    SetupWizard完成后会把下面两个设置的值由0改为1. USER_SETUP_COMPLETE DEVICE_PROVISIONED 然后下次开机只要USER_SETUP_COMPLETE不为0 ...

  8. AI初探——百度、阿里、腾讯开放平台OCR功能解析

    最近有个小程序的项目,要求使用OCR对名片及车辆的照片进行智能识别.该文会将BAT AI平台OCR功能试用的情况进行详细说明.OCR测试源码已共享,具体参见文末. 网站初览 百度 百度AI平台也叫做百 ...

  9. 前端遇到的那些技术难点

    移动端兼容 css篇 移动端的 1px 问题描述:1px 的边框.在高清屏下,移动端的 1px 会很粗. 产生原因:首先先要了解一个概念:DPR(devicePixelRatio) 设备像素比,它是默 ...

最新文章

  1. go panic recover 异常处理
  2. docker centos7 chrome 安装并且支持局域网远程调试
  3. 怎么屏蔽跳出来的登陆窗口_我是怎么从机构跳出来做兼职的(二)
  4. VTK:图片之ImageStack
  5. iPhone 的 Push(推送通知)功能原理浅析
  6. 【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例
  7. 前端学习(2305):react之脚手架基本创建
  8. ORACLE sqlplus设置行数和宽度
  9. “双十一”即将来临,先来看看快递物流企业的大数据
  10. JAVA API----Date类
  11. YzmCMS全新轻爽极简风格模版主题
  12. 仿哔哩哔哩出错404错误页面源码
  13. 分析udp数据报_开发需知!!!TCP和UDP的特点和区别
  14. 压测学习总结(6)——Jmeter同步定时器的使用
  15. linux 路由表及路由设置
  16. 03-jenkins集成环境配置
  17. Linux TOP CPU %wa 值的理解
  18. 腾讯2016实习生招聘有感
  19. 爬取淘宝网站的商品数据
  20. 澳洲航空和香港航空在OAG的准点率报告中获得五星评级

热门文章

  1. python 定义函数时,参数和返回值的数据类型注释
  2. iOS 密码正则表达式
  3. P6874 [COCI2013-2014#6] KOCKICE 题解
  4. C# 密码验证正则表达式
  5. 100天精通Python(基础篇)——第17天:类属性和类方法
  6. 富士通服务器怎么配置u盘装系统,富士通笔记本用绿叶u盘装系统时启动菜单找不到u盘选项怎么办...
  7. python 内置属性__setattr___python魔法方法之__setattr__()
  8. 如何确定人生目标和职业规划
  9. Java使用中国网建发送短信验证码
  10. SYN 洪泛、SYN 攻击、DDos 攻击以及如何抵御