简介:PHP使用zxing/qr-reader解析二维码获取二维码内容
在上一篇文章中我们已经介绍了PHP生成二维码的具体实现,今天我们来讲讲PHP如何解析二维码获取二维码内容吧。
在PHP中我们可以使用【zxing/qr-reader】扩展来解析二维码,该扩展对于php最低版本要求是php>=5.3。当然github上还有其他的PHP解析二维码的扩展,但是使用的人不多,我担心有bug。有一个star比较多但是要求php>=8.0 ,这就有点无法接受了,所以我最终选择了【zxing/qr-reader】.
1. 安装扩展
我们可以使用composer安装扩展,不会安装composer的可以看看官网的安装教程
composer require zxing/qr-reader
2. PHP中使用该扩展解析二维码
<?php
use Zxing\QrReader;
//我这里使用的是tp6框架,参数可以通过request获取上传的文件
$file = request()->file('file')
//实例化二维码解析对象【QrReader对象】,初始化参数为二维码的绝对路径
$obj = new QrReader($file->getPathname());
//解析二维码并获取解析结果
$res = $obj->decode();
注意:$file->getPathname()获取的是PHP上传时的临时文件等同于$_FILES获取的临时文件
上面的代码有点问题,如果上传的二维码的宽高很大会导致可使用内存不足,对于这一点我们可以使用Imagick将图片缩小,再进行解析,完整代码如下:
<?php
use Zxing\QrReader;
//我这里使用的是tp6框架,参数可以通过request获取上传的文件
$file = request()->file('file')
//使用Imagick将二维码缩小,固定二维码的尺寸,这样就不会导致内存不足的问题
$im = new \Imagick($file->getPathname());
$im->thumbnailImage(500,500);
//实例化二维码解析对象【QrReader对象】,初始化参数为图片对象,
//第二个参数:表明第一个参数的类型
$obj = new QrReader($im,QrReader::SOURCE_TYPE_RESOURCE);
//解析二维码并获取解析结果
$res = $obj->decode();
怎么样,是不是很简单?几乎可以使用一行代码就可以解决二维码解析的问题。
有兴趣的可以去我的博客网站体验【在线免费解析二维码】
有遗漏或者不对的可以在我的公众号留言哦