时间:2021-05-26
下载地址:https://github.com/khanamiryan/php-qrcode-detector-decoder
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内存限制为1024Mini_set('memory_limit','1024M');5、报错 Call to undefined function Zxing\Common\fill_array()
解决方法:修改Zxing目录的QrReader.php文件,载入common/customFunctions.php文件,如下:
<?phpnamespace Zxing; use Zxing\Common\HybridBinarizer;use Zxing\Qrcode\QRCodeReader;include_once('common/customFunctions.php'); final class QrReader{}QrReader.php完整代码:
<?phpnamespace 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扩展库解析二维码内容内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Zxing是Google提供的关于条码(一维码、二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码
前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描。二维码原理介绍: 二维码是用某种特定的
0.前言今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个AndroidAPP都会有二维码扫描。本
之前在Android中使用过ZXing识别二维码,ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,并分别提供了iOS和Andro
本文实例为大家解析了Zxing生成二维码的经典案例,供大家参考,具体内容如下1、首先呢,先编译compile‘com.google.zxing:core:3.2