注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

...

 
 
 

日志

 
 

php识别二维码  

2017-02-11 09:10:48|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

现在很多应用场景需要用到二维码的快速识别,比如微信上的很多应用。本文使用QrReader类库,可以很简单的实现二维码识别的功能;对普通二维码、多色彩二维码、带logo二维码等都有极高的识别率。另外需要注意,该类库仅支持php5.3及以上版本的php环境,否则会报错无法正常运行。QrReader请自行下载,如果找不到可以在下边评论留言。

1、首先引入类库,fun.php是我自己写的一个函数,与识别无关:

header("Content-type:text/html;charset=utf-8");
include_once('./lib/QrReader.php');
include_once('./lib/fun.php');
set_time_limit(0);

2、定义图片路径进行识别操作

$pic="20140317101740310.jpg";
$qrcode = new QrReader($pic);
$text = $qrcode->text(); //返回识别后的文本
echo "初次识别:".$text."<br>";

3、有可能会遇到宽高非常大的二维码图,这种情况QrReader无法识别,我是把源图缩小后再进行二次识别

if (empty($text)) {
	$ex=trim(pathinfo($pic, PATHINFO_EXTENSION));
	mkThumbnail($pic,500,null,"tmp_".$pic);
	switch ($ex) {
		case "jpg":
			$im = imagecreatefromjpeg("tmp_".$pic);
			if ($im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
				imagejpeg($im, "tmp_".$pic);
			} else {
				echo 'jpeg文件错误处理失败';
			}
			break;
		case "png":
			$im = imagecreatefrompng("tmp_".$pic);
			if ($im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
				imagepng($im, "tmp_".$pic);
			} else {
				echo 'png文件错误处理失败';
			}
			break;
		case "gif":
			$im = imagecreatefromgif("tmp_".$pic);
			if ($im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
				imagegif($im, "tmp_".$pic);
			} else {
				echo 'gif文件错误处理失败';
			}
			break;
	}
	imagedestroy($im);
	$qrcode2 = new QrReader("tmp_".$pic);
	$text = $qrcode2->text(); //返回识别后的文本
	echo "二次识别:".$text."<br>";;
	//unlink("tmp_".$pic);
}

4、如果是应用在微信场景,有时可能需要过滤掉一些非法的二维码

if (empty($text) || !strstr($text,'weixin.qq.com')) {
	echo "非法验证码图片!";
}

QrReader这个类库的识别准确度应该可以应用在绝大多数实际应用中,而且使用方法简单。

  评论这张
 
阅读(226)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017