|
1 | 1 | from enums.color import Color
|
2 |
| -from enums.error_collection_level import ErrorCollectionLevel |
3 |
| -from rmqr.rmqr import rMQR |
4 |
| -from rmqr.rmqr import DataTooLongError |
5 |
| -from rmqr.data_capacities import data_capacities |
| 2 | +from rmqr import rMQR, ErrorCollectionLevel |
6 | 3 | from encoder.byte_encoder import ByteEncoder
|
7 | 4 | from qr_image import QRImage
|
8 | 5 |
|
9 | 6 |
|
10 |
| -def select_version(data, error_collection_level): |
11 |
| - data_length = ByteEncoder.length(data) |
12 |
| - ok_versions = [] |
13 |
| - for qr_version, capacity in data_capacities.items(): |
14 |
| - if data_length <= capacity['Byte'][error_collection_level]: |
15 |
| - ok_versions.append({ |
16 |
| - 'version': qr_version, |
17 |
| - 'diff': capacity['Byte'][error_collection_level] - data_length |
18 |
| - }) |
19 |
| - print(f"ok: {qr_version}") |
20 |
| - |
21 |
| - if len(ok_versions) == 0: |
22 |
| - raise DataTooLongError("The data is too long.") |
23 |
| - |
24 |
| - # とりあえず容量のあまりが最も少なくなるものを選ぶ |
25 |
| - # TODO: 選び方をパラメータで変えられるようにしたい |
26 |
| - selected = sorted(ok_versions, key=lambda x: x['diff'])[0] |
27 |
| - return selected['version'] |
28 |
| - |
29 |
| - |
30 |
| -def make_qr(data, version, error_collection_level): |
31 |
| - qr = rMQR(version, error_collection_level) |
32 |
| - qr.make(data) |
33 |
| - return qr |
34 |
| - |
35 |
| - |
36 | 7 | def main():
|
37 |
| - data = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. orem ipsum dolor sit amet, consectetur adipi" |
| 8 | + data = "ABCdef123漢字あいうえお" |
38 | 9 | error_collection_level = ErrorCollectionLevel.M
|
39 |
| - version = select_version(data, error_collection_level) |
40 |
| - print(f"selected: {version}") |
41 |
| - qr = make_qr(data, version, error_collection_level) |
| 10 | + qr = rMQR.fit(data, error_collection_level) |
42 | 11 | qr.dump()
|
43 | 12 |
|
44 | 13 | image = QRImage(qr)
|
|
0 commit comments