近段需要写一个通过PHP来识别二维码的功能,在网上查了很久才解决问题。以此来记录下来解决问题的方法。

最开始找的方法是一个叫 php-zbarcode 的扩展,自己照着网上的安装步骤安装了 ImageMagick zbar ,但编译 php-zbarcode 时出错了,后来换成Center OS 系统还是出错,由于技术有限也就放弃了。

然后是在github上找到了一个叫 php-qrcode-detector-decoder 的扩展,安装方法和使用方法如下,但安装完成后,只能识别只有二维码的图片;但是不能识别一张图片中的二维码(就是图中只有一小部分是二维码)。不符合我得需求又继续查找了一番。

//在控台执行安装
composer require khanamiryan/qrcode-detector-decoder //使用方法
require __DIR__ . "/vendor/autoload.php";
$qrcode = new QrReader('path/to_image');
$text = $qrcode->text(); //返回二维码的内容

最后,我发现 php-qrcode-detector-decoder 是基于 Zxing library (谷歌推出的用来识别多种格式条形码的开源项目)而实现的,我也顺利的找到了 Zxing library 的GitHub地址,其中包括了很多语言的二维码识别,有兴趣的可以自己去看。下面来说我们用到的 php-zxing 扩展。

// 在composer文件中引入扩展,然后composer update
{
"require": {
"dsiddharth2/php-zxing": "dev-master"
}
} // php中的代码
use PHPZxing\PHPZxingDecoder; $config = array(
'try_harder' => true, // 当不知道二维码的位置是设置为true
'multiple_bar_codes' => true, // 当要识别多张二维码是设置为true
'crop' => '100,200,300,300', // 设置二维码的大概位置
);
$decoder = new PHPZxingDecoder($config);
$decoder->setJavaPath('/your/path/to/java'); //设置jdk的安装路径,该扩展是居于java的,所以需要jdk。如果设置了jdk的环境变量则无需设置 $decodedData = current($decoder->decode('../images/Code128Barcode.jpg')); // 路径需要时绝对路径或相对路径,不能是url
/**
*返回的对象类型
* 识别成功时返回ZxingImage对象 包括
* getImageValue 二维码的内容
* getFormat 编码图像的格式
* getType 获取解码图像的类型,例如:URL,TEXT等
* getImagePath 获取图像的路径
* 图片中没有识别的二维码时返回ZxingBarNotFound对象 包括
* getImageErrorCode 获取未找到图像的错误代码
* getErrorMessage 错误信息
* getImagePath 获取图像的路径
/**
//例如
$decodedData->getImageValue(); // 二维码的内容

本文转自:https://www.jianshu.com/p/91eb7452548a

如需转载,请注明出处:http://www.cnblogs.com/zhuchenglin/p/8352755.html

php 识别二维码(转载)的更多相关文章

  1. 移动端禁止图片长按和vivo手机点击img标签放大图片,禁止长按识别二维码或保存图片【转载】

    移动端禁止图片长按和vivo手机点击img标签放大图片,禁止长按识别二维码或保存图片 img{ pointer-events: none; } 源文地址:https://www.cnblogs.com ...

  2. PHP识别二维码(php-zbarcode)

    PHP识别二维码(php-zbarcode) 标签: php二维码扩展 2015-11-06 17:12 609人阅读 评论(0) 收藏 举报  分类: PHP(1)  Linux 版权声明:本文为博 ...

  3. Pyqt+QRcode 生成 识别 二维码

    1.生成二维码 python生成二维码是件很简单的事,使用第三方库Python QRCode就可生成二维码,我用Pyqt给QRcode打个壳 一.python-qrcode介绍 python-qrco ...

  4. python实现树莓派生成并识别二维码

    python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...

  5. HTML5实现扫描识别二维码/生成二维码

    扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源.  2. 利用canvas使用相关算法分析图片识别图 ...

  6. iOS--iOS7摄像头识别二维码功能

    iOS–iOS7摄像头识别二维码功能 属性介绍: AVFoundation 框架基于以下几个类实现图像捕捉 ,通过这些类可以访问来自相机设备的原始数据并控制它的组件. AVCaptureDevice ...

  7. C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)

    1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...

  8. spa(单页应用)中,使用history模式时,微信长按识别二维码在ios下失效的问题

    spa(单页应用,vue)中,使用history模式时,微信长按识别二维码在ios下失效的问题. 触发条件: spa单页应用: 路由模式 history 从其他页面跳转到带有微信二维码识别的页面(不是 ...

  9. python3 树莓派 + usb摄像头 做颜色识别 二维码识别

    今天又啥也没干 我完蛋了哦  就是没办法沉下心来,咋办....还是先来条NLP吧.. 七,凡事必有至少三个解决方法 对事情只有一个方法的人,必陷入困境,因为别无选择. 对事情有两个方法的人也陷入困境, ...

随机推荐

  1. 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    一. 说在前面的话 本节主要在前面章节的基础上补充了几个简单的知识点,比如:第三方调用通过 GlobalHost.ConnectionManager.GetHubContext<MySpecHu ...

  2. SpringBoot系列: 设计Restful风格的API

    RESTful 架构REST 并非一种技术或规范, 而是一种架构风格, 如果一个架构符合Rest的约束条件和原则, 就可以称作是 RESTful 架构. REST全称是Representational ...

  3. CentOS7.3安装VirtualBox

    安装 DKMS.更新内核 # yum -y install gcc make glibc kernel-headers kernel-devel dkms Installed:   dkms.noar ...

  4. 对评分矩阵进行分解,SVD与LSI

    摘自 推荐系统 https://www.cnblogs.com/lzllovesyl/p/5243370.html 一.SVD奇异值分解 1.SVD简介 SVD(singular value deco ...

  5. Anaconda+django安装问题

    Anaconda使用中常遇到如下问题: 如果Anaconda不是最新版本,可在Anaconda Prompt中使用如下命令更新至最新版 conda update -n base -c defaults ...

  6. 模组 前后端分离CURD 组件

    js (function () { // {# -------------------------------------------------------------------------- # ...

  7. Stm32复习之时钟系统

    地点:南图 这部分的内容是整个STM32学习知识的核心,不管是什么微控制器处理器,时钟系统都是其核心类似于人之心脏,因此学好理解这一章节至关重要. 为了便于理解这一系统,将从以下几个层次来讲.(忘了是 ...

  8. C/C++ 函数指针使用总结

    一 函数指针介绍 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关.举例如下: int add(int nLeft,int nRight);//函数定义 该函数类型为int ...

  9. ES--08

    71.内核原理探秘_最后优化写入流程实现海量磁盘文件合并(segment merge,optimize) 课程大纲 每秒一个segment file,文件过多,而且每次search都要搜索所有的seg ...

  10. SQL Server Change Tracking

    1 概述 “更改跟踪”和“变更数据捕获”捕获和记录用户表的DML更改(插入.更新和删除操作),为某些有特殊需求的应用程序服务. 1.1 更改跟踪 更改跟踪捕获表的数据行更改这一行为,但不会捕获更改的具 ...