zoukankan      html  css  js  c++  java
  • php 识别二维码

    近段需要写一个通过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 PHPZxingPHPZxingDecoder;
    
    $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

  • 相关阅读:
    洛谷P2437 蜜蜂路线
    树莓派python3安装face_recognition和opencv2
    记事本
    python中退出多层循环的方法
    openwrt 不死uboot Breed大全
    python通过http下载文件的方法
    Python37 GUI Qt5安装与使用
    openwrt Python3.6通过自带的urllib通过get或post方法请求url
    openwrt 版本源码地址
    echo追加和覆盖
  • 原文地址:https://www.cnblogs.com/zhuchenglin/p/8352755.html
Copyright © 2011-2022 走看看