PHP 实现识别二维码

黄小嘻
2021-07-06 / 2 评论 / 83 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年07月08日,已超过314天没有更新,若内容或图片失效,请留言反馈。

前言

突然头脑风暴想写个识别二维码的接口,方便后续使用,所以就有了接下来的操作和踩坑。 表情

思索一番,决定用PHP来实现,原因不必多解释,懂的都懂 表情 ,所以就找了一下第三方扩展库,最开始找的是 php-zbarcode 的扩展,按照网上的安装步骤安装了 ImageMagickzbar 但是后来吧,发现这玩意儿搞不懂,安装了没啥反应,又用宝塔面板在指定的PHP版本上进行了安装还是无果,最终还是以失败而告终。 表情

接下来你们以为就结束了?NO 不可能,绝对不可能!又花了一个多小时检索然后就在万能的 CSDN 找到一篇文章,里面有具体的解释和使用教程(也可以看官方文档都差不多),作者与我开始是一样的同样使用了我的第一种办法,结果是一样的(心里舒坦多了 表情


补充说明(重点 表情 坑来了)

一开始觉得会很顺利的就可以实现,可终究我错了,经过试验它却疯狂报错。于是我又开始查阅资料,才知道是 空间命名 的问题(当我找到资料时也就反应过来了,当场直接裂开 表情


完整示例

<?php
require_once('vendor/autoload.php');
use PHPZxing\PHPZxingDecoder;

$config = array(
    'try_harder' => true, // 当不知道二维码的位置的时候设置为true
    'multiple_bar_codes' => false, // 当需要识别多个二维码的时候设为true
    'possible_formats' => '' // 要解码的格式列表,其中格式是 BarcodeFormat(可百度,下面列出部分类型) 中的任何值
    'crop' => '100,200,300,300'  // 裁剪图像,它只会读取裁剪的部分,设置二维码的大概位置
);
$decoder = new PHPZxingDecoder($config);
$data = $decoder->decode('test2.jpg');  // 图片路径不能是Url

// 使用isFound()函数检查是否有二维码存在
if($data->isFound()){
    echo json_encode(array(
        'ImageValue'=>$data->getImageValue(),
        'Format'=>$data->getFormat(),
        'Type'=>$data->getType(),
        'ImagePath'=>$data->getImagePath()
    ));
}else {
    echo json_encode(array(
        'ErrorCode'=>$data->getImageErrorCode(),
        'ErrorMessage'=>$data->getErrorMessage(),
        'ImagePath'=>$data->getImagePath()
    ));
}
?>

条形码/二维码类型列表

4

评论 (2)

取消
  1. 头像
    某牛牛
    Windows 10 · Google Chrome

    画图

    回复
    1. 头像
      黄小嘻 作者
      Windows 10 · Google Chrome
      @ 某牛牛

      表情 表情 表情

      回复