首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ZXing库将解码QR码,而不是条形码

ZXing库将解码QR码,而不是条形码
EN

Stack Overflow用户
提问于 2021-11-11 19:20:01
回答 1查看 2.1K关注 0票数 1

我使用ZXing库在HTML环境中解码QR代码和条形码。下面的代码用任何QR代码返回一个有效的响应,但是使用常规的UPC(或任何其他)条形码生成一个错误。

代码是基于

https://github.com/zxing-js/library/blob/master/docs/examples/multi-image/index.html

要将图像加载到

代码语言:javascript
运行
复制
<div class="imageContainer">
    <img src="">
</div>

加载库和JS逻辑

@z行/图书馆:"^0.18.6“

https://github.com/zxing-js/library

代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" src="./node_modules/@zxing/library/umd/index.min.js"></script>
<script type="text/javascript">
    //initialize the reader
    const codeReader = new ZXing.BrowserMultiFormatReader();
    console.log('ZXing code reader initialized');

    //set, load, and send image to decoder
    var img = $('.imageContainer img')[0];
    img.onload = function () {
       console.info("Image loaded !");
       $(document).ready(function(){
        decodeBarcode(img);
       });
    };
    img.onerror = function () {
       console.error("Cannot load image");
       //do something else...
    };
    img.src = "img/test.jpg";

    //decode the image
    function decodeBarcode(img) {
        codeReader.decodeFromImage(img).then((result) => {
            console.log(result)
        })
        .catch((err) => {
            console.log(err)
        })
        console.log(`Started decode for image from ${img.src}`);
    }
</script>

任何有效条形码的预期结果,但目前只适用于QR代码。

代码语言:javascript
运行
复制
{
    "text": "Hello :)",
    "rawBytes": {
    },
    "numBits": 152,
    "resultPoints": [
    ],
    "format": 11,
    "timestamp": 1636657881106,
    "resultMetadata": {}
}

UPC的实际结果-条形码(或任何不是QR码的条形码)

代码语言:javascript
运行
复制
R: No MultiFormat Readers were able to detect the code.
    at ir.decodeInternal (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:252678)
    at ir.decodeWithState (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:251730)
    at t.BrowserMultiFormatReader.decodeBitmap (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:288702)
    at t.BrowserMultiFormatReader.decode (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:34909)
    at n (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:34314)
    at https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:34495
    at new Promise (<anonymous>)
    at t.BrowserMultiFormatReader.decodeOnce (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:34475)
    at t.BrowserMultiFormatReader.decodeFromImageElement (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:32072)
    at t.BrowserMultiFormatReader.decodeFromImage (https://www.myserver.com/node_modules/@zxing/library/umd/index.min.js:15:31441)

有趣的是同样的UPC-一个图像在https://zxing.org/w/decode.jspx成功解码

我已经尝试过无数的条形码变体,所有这些都在ZXing网站上成功解码。不管条形码是什么,如果它不是QR代码,就会产生上面的错误。我是不是遗漏了什么?

如何使用ZXing JS库成功地解码标准UPC-一个条形码?

EN

回答 1

Stack Overflow用户

发布于 2022-06-27 14:30:19

由于默认情况下未启用UPC-A,因此必须将其作为hints提供给BrowserMultiFormatReader

代码语言:javascript
运行
复制
const hints = new Map();
const enabledFormats = [
    // ...ALL_FORMATS_WHICH_YOU_WANT_TO_ENABLE
    ZXing.BarcodeFormat.UPC_A,
];
hints.set(ZXing.DecodeHintType.POSSIBLE_FORMATS, enabledFormats);
const codeReader = new ZXing.BrowserMultiFormatReader(hints);

可用的BarcodeFormats可以找到这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69933761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档