OUDON / rmqrcode-python

Rectangular Micro QR Code (rMQR Code) Generator in Python
https://pypi.org/project/rmqrcode/
Other
154 stars 16 forks source link

Can not generate R17x43 code #53

Open tkamiya22 opened 1 month ago

tkamiya22 commented 1 month ago

When I try to generate codes for version R17x43, the program crashed.

to Reproduce

  1. $ rmqr foo foo.png --version R17x43

error message

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "...\venv\Scripts\rmqr.exe\__main__.py", line 7, in <module>
  File "...\venv\Lib\site-packages\rmqrcode\console.py", line 57, in main
    qr = _make_qr(args.DATA, ecc=ecc, version=args.version, fit_strategy=fit_strategy)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\venv\Lib\site-packages\rmqrcode\console.py", line 29, in _make_qr
    qr.make()
  File "...\venv\Lib\site-packages\rmqrcode\rmqrcode.py", line 161, in make
    blocks = self._split_into_blocks(codewords, self._qr_version["blocks"][self._error_correction_level])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\venv\Lib\site-packages\rmqrcode\rmqrcode.py", line 357, in _split_into_blocks
    block.set_data_and_compute_ecc(codewords_in_block)
  File "...\venv\Lib\site-packages\rmqrcode\rmqrcode.py", line 861, in set_data_and_compute_ecc
    self._compute_ecc_codewords()
  File "...\venv\Lib\site-packages\rmqrcode\rmqrcode.py", line 897, in _compute_ecc_codewords
    g = GeneratorPolynomials[self._ecc_codewords_num]
        ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 21

Version

rmqrcode: 0.3.2 QRQR for Android: 3.0.32

tkamiya22 commented 1 month ago

When I changed the value of c to 61, I was able to read it with QRQR. (I'll make a PR after I check some cases.)

https://github.com/OUDON/rmqrcode-python/blob/9dbbc2c6163fde897431a57cad9e475bf1e56e48/src/rmqrcode/format/rmqr_versions.py#L994-L1000