浏览代码

修复二维码

刘忠健 6 月之前
父节点
当前提交
533ca8a2cf
共有 3 个文件被更改,包括 51 次插入6 次删除
  1. 27 4
      api/app/api/controller/Qrcode.php
  2. 2 1
      api/composer.json
  3. 22 1
      api/doc/二维码.md

+ 27 - 4
api/app/api/controller/Qrcode.php

@@ -9,8 +9,8 @@ use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
 use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
 use Endroid\QrCode\Label\Font\NotoSans;
 use Endroid\QrCode\Writer\PngWriter;
+use PHPZxing\PHPZxingDecoder;
 use think\facade\Log;
-use ZxingSPE\QrReader;
 
 class Qrcode extends Base
 {
@@ -59,8 +59,31 @@ class Qrcode extends Base
         if (!$url) {
             $this->error("url为空");
         }
-        $qrcodeReader = new QrReader($url);
-        $qrcodeText = $qrcodeReader->text();
-        $this->success(["text" => $qrcodeText]);
+        //本二维码识别方案:https://github.com/dsiddharth2/php-zxing
+        //需要服务器有安装java
+        $decoder = new PHPZxingDecoder();
+        //把url下载到本地
+        $folder = runtime_path() . "/qrcode/" . date("Y-m") . "/" . date("d/");
+        if (!is_dir($folder)) {
+            mkdir($folder, 0777, true);
+        }
+        $file = $folder . basename($url);
+        $imgData = file_get_contents($url);
+        file_put_contents($file, $imgData);
+        $data = $decoder->decode($file);
+        if ($data->isFound()) {
+            $this->success([
+                "text" => $data->getImageValue(),
+                "format" => $data->getFormat(),
+                "type" => $data->getType(),
+            ]);
+            /* var_dump($data->getImageValue());
+             $data->getFormat();
+             $data->getType();*/
+        }
+        $this->error("未识别到二维码");
+        /* $qrcodeReader = new QrReader($url);
+         $qrcodeText = $qrcodeReader->text();
+         $this->success(["text" => $qrcodeText]);*/
     }
 }

+ 2 - 1
api/composer.json

@@ -29,7 +29,8 @@
         "overtrue/wechat": "~5.0",
         "topthink/think-view": "^1.0",
         "jaeger/querylist": "^4.2",
-        "kharisma-wardhana/php_qr_decoder": "^1.0"
+        "dsiddharth2/php-zxing": "^1.0"
+
     },
     "require-dev": {
         "symfony/var-dumper": "^4.2",

+ 22 - 1
api/doc/二维码.md

@@ -1,5 +1,5 @@
 # 二维码接口
-
+## 二维码生成
 这是公司的二维码在线生成接口
 
 ### 接口地址:
@@ -33,3 +33,24 @@ https://api.ycxxkj.com/index.php/api/qrcode/online?text=abc&size=500&label=abc&l
 https://api.ycxxkj.com/index.php/api/qrcode/online?text=https%253A%252F%252Fwww.ycxxkj.com&size=500&label=宇宸&lable_size=100
 
 https://api.ycxxkj.com/index.php/api/qrcode/online?text=文本
+
+## 二维码解码 
+
+### 接口地址:
+
+https://api.ycxxkj.com/index.php/api/qrcode/online
+
+### 调用方式
+
+post请求
+
+### 接口参数
+| 字段         | 类型     | 是否必须 | 说明              |
+|------------|--------|------|-----------------|
+| url        | string | 是    | 二维码图片网址,要求公网可访问 |
+
+### 返回示例
+```
+{"code":0,"data":{"text":"WT202410152110104585"},"msg":""}
+```
+text是二维码的解析结果