如何在React JS中解码包含base 64 png的qr代码

时间:2019-02-06 21:39:07

标签: javascript node.js reactjs qr-code zxing

我一直在尝试解码具有json数据的qr代码。

enter image description here

在在线工具中,其工作示例为https://www.onlinebarcodereader.com/。它读取数据。 我正在以编程方式尝试

这是我的代码

handleFileChange(event) {
    const {target} = event;
    const {files} = target;

    if (files && files[0]) {
      const reader = new FileReader();

      //  reader.onloadstart = () => this.setState({loading: true});

      reader.onload = async event => {
        this.setState({
          data: event.target.result,
          loading: false
        });
       // const img = document.getElementById('img');
      console.log(event.target.result);
        let result;
        try {
          var qr = new QrCode();

// set the callback that receives the decoded content as the tasks is async
          qr.callback = function(decodedDATA){
            alert(decodedDATA);
          };

    // event.target.result is
 //data:image/png;base64,iVBORw0KGgoAAAANSU...
          qr.decode(event.target.result);
        } catch (err) {
          console.log(err);
        }

        console.log(result);
      };

      reader.readAsDataURL(files[0]);
    }
  }
<input
              id="img"
              type="file"
              accept="image/*"
              onChange={this.handleFileChange}
            />

我已经使用了这个库https://www.npmjs.com/package/qrcode-reader 它具有无法读取超过某些字符的数据的错误,因此我遇到了错误。 我也尝试过使用zxing库,但是我正在使用服务器端渲染,但未定义错误窗口。在webpack中需要完成许多配置,但是我不知道这些配置。我正在为此寻找简单的解决方案。 谁能帮助我使用工作库。

1 个答案:

答案 0 :(得分:0)

使用此库qrcode-decoder找到了解决方案。

在我的代码中

import QrcodeDecoder from 'qrcode-decoder';

          const qr = new QrcodeDecoder();

         const result = await qr.decodeFromImage(event.target.result);