как декодировать код QR, который содержит базу 64 PNG в реагировать JS - PullRequest
0 голосов
/ 07 февраля 2019

Я пытался декодировать этот код qr, содержащий данные json.

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, но я использую серверную визуализацию, получая окно ошибки не определено.В веб-пакете нужно сделать много настроек, но я не знаю об этом.Я ищу простое решение для этого.Может кто-нибудь, пожалуйста, помогите мне с рабочей библиотекой.

1 Ответ

0 голосов
/ 07 февраля 2019

Нашел решение с помощью этой библиотеки qrcode-decoder.

В моем коде

import QrcodeDecoder from 'qrcode-decoder';

          const qr = new QrcodeDecoder();

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