一、下载PHP版本的Zxing扩展库

下载地址:https://github.com/khanamiryan/php-qrcode-detector-decoder

二、使用Zxing扩展库

1、文件下载好后,直接解压,结构如下,我们只需要lib这个文件夹

2、将lib文件夹重命名为Zxing,然后打开Zxing目录下的QrReader.php文件,可以发现命名空间是Zxing

3、接下来就很简单了,把Zxing文件夹放到thnikphp的扩展目录extend里

4、报错 Fatal error:: Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in

报错原因:PHP内存不够

解决方法:在调用QrReader前,先用ini_set()方法修改内存限制大小

//修改php内存限制为1024M
ini_set('memory_limit','1024M');

5、报错 Call to undefined function Zxing\Common\fill_array()

解决方法:修改Zxing目录的QrReader.php文件,载入common/customFunctions.php文件,如下:

<?php
namespace Zxing;
 
use Zxing\Common\HybridBinarizer;
use Zxing\Qrcode\QRCodeReader;
include_once('common/customFunctions.php');
 
final class QrReader
{
}

QrReader.php完整代码:

<?php
namespace Zxing;
 
use Zxing\Common\HybridBinarizer;
use Zxing\Qrcode\QRCodeReader;
include_once('common/customFunctions.php');
 
final class QrReader
{
 const SOURCE_TYPE_FILE  = 'file';
 const SOURCE_TYPE_BLOB  = 'blob';
 const SOURCE_TYPE_RESOURCE = 'resource';
 
 private $bitmap;
 private $reader;
 private $result;
 
 public function __construct($imgSource, $sourceType = QrReader::SOURCE_TYPE_FILE, $useImagickIfAvailable = true)
 {
  if (!in_array($sourceType, [
   self::SOURCE_TYPE_FILE,
   self::SOURCE_TYPE_BLOB,
   self::SOURCE_TYPE_RESOURCE,
  ], true)) {
   throw new \InvalidArgumentException('Invalid image source.');
  }
  $im = null;
  switch ($sourceType) {
   case QrReader::SOURCE_TYPE_FILE:
    if ($useImagickIfAvailable && extension_loaded('imagick')) {
     $im = new \Imagick();
     $im->readImage($imgSource);
    } else {
     $image = file_get_contents($imgSource);
     $im = imagecreatefromstring($image);
    }
    break;
 
   case QrReader::SOURCE_TYPE_BLOB:
    if ($useImagickIfAvailable && extension_loaded('imagick')) {
     $im = new \Imagick();
     $im->readImageBlob($imgSource);
    } else {
     $im = imagecreatefromstring($imgSource);
    }
    break;
 
   case QrReader::SOURCE_TYPE_RESOURCE:
    $im = $imgSource;
    if ($useImagickIfAvailable && extension_loaded('imagick')) {
     $useImagickIfAvailable = true;
    } else {
     $useImagickIfAvailable = false;
    }
    break;
  }
  if ($useImagickIfAvailable && extension_loaded('imagick')) {
   if (!$im instanceof \Imagick) {
    throw new \InvalidArgumentException('Invalid image source.');
   }
   $width = $im->getImageWidth();
   $height = $im->getImageHeight();
   $source = new IMagickLuminanceSource($im, $width, $height);
  } else {
   if (!is_resource($im)) {
    throw new \InvalidArgumentException('Invalid image source.');
   }
   $width = imagesx($im);
   $height = imagesy($im);
   $source = new GDLuminanceSource($im, $width, $height);
  }
  $histo  = new HybridBinarizer($source);
  $this->bitmap = new BinaryBitmap($histo);
  $this->reader = new QRCodeReader();
 }
 
 public function decode()
 {
  try {
   $this->result = $this->reader->decode($this->bitmap);
  } catch (NotFoundException $er) {
   $this->result = false;
  } catch (FormatException $er) {
   $this->result = false;
  } catch (ChecksumException $er) {
   $this->result = false;
  }
 }
 
 public function text()
 {
  $this->decode();
 
  if (method_exists($this->result, 'toString')) {
   return $this->result->toString();
  }
 
  return $this->result;
 }
 
 public function getResult()
 {
  return $this->result;
 }
}

6、在代码里调用

//引用
use Zxing\QrReader;
//调用类库
$qrcode = new QrReader("二维码图片路径"); 
$content = $qrcode->text();

到此这篇关于Thinkphp使用Zxing扩展库解析二维码内容图文讲解的文章就介绍到这了,更多相关Thinkphp使用Zxing扩展库解析二维码内容内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Thinkphp使用Zxing扩展库解析二维码内容图文讲解的更多相关文章

  1. ios – MonoTouch,ZXing:呈现ZXingScannerViewController失败

    因此,在我的应用程序开始时,用户必须能够扫描QR码.在应用程序设置中,用户可以扫描另一个条形码以更改设置中的某些数据.在我的应用程序开始扫描仪工作正常,但当我尝试扫描settingsVC中的条形码时,我得到以下警告:我已经尝试在viewDidAppear上调用扫描,但是我得到了相同的警告.编辑:试图使用没有异步的条形码扫描仪,但我仍然得到相同的消息.我也尝试使用AVFoundation导致同样的错

  2. android – 如何在不安装barcodescanner应用程序的情况下使用ZXing库

    我一直在开发一个Android应用程序来扫描条形码和QR码,并将结果发送到其他应用程序(HTTP).我已经通过互联网阅读了大部分文档,并且在堆栈中通过流程阅读并使其正常工作.我能够在我的设备上运行独立的zxingandroid应用程序,我也可以运行我自己的独立Android应用程序来使用Zxing意图扫描条形码.但即使在阅读了这么多问题以及互联网上的一些博客之后,我也无法满足我的严格要求.我想实现

  3. 从图库android中扫描条形码

    我正在创建一个android项目,主要功能是扫描条码.我尝试将Zxing库集成到我的项目中,并且它工作正常.但是,似乎不支持从Android设备库中的可用图像扫描条形码.我怎么能这样做?

  4. android – 如何在ZXing中设置位图的大小?

    我正在使用ZXing生成QR码.这就是我的代码:而另一部分:这是我正在使用代码的xaml:问题是,无论我将什么设置为Convertimagestream的高度和宽度,结果图像都不是方形,而是看起来像这样:怎么把它变成正方形?提前致谢.解决方法您的代码是正确的,图像大小正确:我通过保存加倍检查:然后拉它并检查它的大小:我的页面代码:更新:你看到的是框架比图像宽,而不是图像本身.更改框架的BackgroundColor

  5. android – 扫描时自动更改屏幕方向(使用ZXING库)

    我有MainActivity.kt,在那里我展示了不同需求的不同片段.在某些时候,我按下调用startScanner()函数的按钮’X’:的Manifest.xml:Gradle.file:它确实打开扫描仪和一切,但在横向模式.为什么这不起作用?解决方法有一个快捷方式可以做到这一点.只需将其添加到清单:

  6. android – zxing onActivityResult仅在“活动”中仅在片段中调用

    我在zxingonActivityResult()中遇到一些问题.正如您可以在代码中看到的,我已经正确地调用了https://code.google.com/p/zxing/wiki/ScanningViaIntent所述的新意图.问题是如何在Fragment中捕获onActivityResult(),因为我需要Fragmnet中的这些数据而不是Activity?解决方法正如Martynnw指出的

  7. android – 如何使用zxing库从一个图像中读取多个qr代码

    我正在开发一个扫描仪,读取一个图像中找到的多个QR码.我设法读取图像中的QR码,但它给我不一致的结果.假设图像中有4个QR码,有时候我可以读取2,有时候可以读取2或者只是1.与原始扫描仪(ZXingScanner)不同,它可以快速解码.在我的情况下,我必须确保有足够的光线,并且图像不会模糊解码.我正在使用QRCodeMultiReader来解码图像.目前使用ZXingLibrary来创建应用程序.

  8. ThinkPHP 5.x远程命令执行漏洞复现

    这篇文章主要介绍了ThinkPHP 5.x远程命令执行漏洞复现的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  9. thinkPHP数据查询常用方法总结【select,find,getField,query】

    这篇文章主要介绍了thinkPHP数据查询常用方法,结合实例形式总结分析了select,find,getField,query等方法进行数据库查询操作的具体操作步骤与相关实现技巧,需要的朋友可以参考下

  10. ThinkPHP框架实现的邮箱激活功能示例

    这篇文章主要介绍了ThinkPHP框架实现的邮箱激活功能,结合实例形式分析了thinkPHP使用class.smtp.php及class.phpmailer.php类文件进行邮件发送实现激活功能的具体操作技巧,需要的朋友可以参考下

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部