php 识别二维码(转载)

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

最开始找的方法是一个叫 php-zbarcode 的扩展,自己照着网上的安装步骤安装了 ImageMagickzbar ,但编译 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

原文地址:https://www.cnblogs.com/zhuchenglin/p/8352755.html

时间: 2024-08-01 21:58:04

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

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

扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源. 2. 利用canvas使用相关算法分析图片识别图片得出结果,可用jquery.qrcode分析二维码 .(技术点:getImageData) 局限性: 移动平台支持getUserMedia/Stream API的浏览器比较少,支持列表http://caniuse.com/#feat=stream (目前没发现有IOS是支持的) 代码实现: 感谢gi

PHP识别二维码(php-zbarcode

PHP识别二维码(php-zbarcode) 标签: php二维码扩展 2015-11-06 17:12 609人阅读 评论(0) 收藏 举报  分类: PHP(1)  Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. 说明:扩展需要依赖ImageMagick和zbar,安装前先安装这两个软件 1.安装ImageMagick(http://www.imagemagick.org/) yum install ImageMagick.x86_64 ImageMagick-devel.

Qt+QZXing编写识别二维码的程序

本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + Qt5 从这里下载最新版的QZXing_sourceV2.3.zip,解压之后得到的是源代码,里面有一个QZXing.pri文件.理论上用MSVC加载这个pri文件之后这个库的代码就会出现在工程的代码列表中,但是理论归理论,实际上msvc在加载pri的过程中,弹出一大堆错误信息,完全不知所云,网上找

Android的二维码功能实现以及长按识别二维码

一.初步集成Zxing项目 二维码的识别可是在生活中随处可见的,现在基本上所有APP都有二维码的相关操作,如果识别二维码从头开始开发做起来还是相当复杂和麻烦的,从零开始开发肯定不现实,最好的做法就是借助现有的开源项目,Github上名气最大的就是Zxing了,提供了多个平台的二维码扫码解决方案,开源项目地址是:https://github.com/zxing/zxing,我们今天集成Zxing到我们自己的项目中去,并实现一些二维码生成.扫描.长按识别二维码等相关操作: 1.下载Zxing项目所依

Jquery生成二维码(微信中长按图片识别二维码功能)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="//cdn.bootcss.com/jquery/3.1.1/jquery.js"></script> <script src="

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

一.ZXing.Net 源代码地址:http://zxingnet.codeplex.com/ 也可以使用Nuget包管理,添加如图: 说明:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和Android.现在也有了对应的.Net版本 二.生成二维码 将字符编码时可以指定字符格式:默认为ISO-8859-1英文字符集,但一般移动设备常用UTF-8字符

unity 调用手机摄像机 识别二维码

简单的调用手机摄像 拍摄 然后识别二维码 显示二维码的内容 需要导入一个zxing.unity.dll文件,现在这个脚本的识别数据是放在Updata里边扫描的 数据量特别大会卡  要是用的话就自己做一下一秒执行一次.我这里没有弄 下载地址http://download.csdn.net/detail/chh19941125/8734149 代码: using System.Threading; using UnityEngine; using ZXing; public class WebCam

在Android用ZXing.jar识别二维码的精简版(简化了配置和代码)

最近公司做了一款OTP令牌激活的产品,由于之前激活手机令牌需要输入很多的激活信息才能进行激活.经过一段使用后,发现易用性不是很强,考虑如果加入二维码的的扫码功能岂不是大大增加了易用性.     在网上搜了很多资料,要不是配置太多,要不就是代码量太大,最后没办法就硬着头皮去写和去精简,最后压缩至目前的版本.如果有更好的版本可以联系我. 具体DEMO可以通过 下载http://download.csdn.net/detail/fugui6611634/7341277下载 本文代码运行的结果如下: 代

在Qt5的QML中使用QZXing识别二维码

前言 ZXing库是一个用来识别二维码的库,QZXing是一个基于Qt的Qt wrapper library,在本文我们使用它和qml开发一个android小应用. 添加QZXing项目 QZXing最常用是作为一个子项目包含在我们的项目中,在我们的项目的pro文件中添加如下的一句: include(./QZXing/QZXing.pri) QZXing和我们的pro文件在同一个目录. qml程序 import QtQuick 2.0 import QtQuick.Controls 1.3 im