Кожен код тут статичний. Вміст закодовано в самому візерунку, тож код і є даними. Немає переспрямування через POLPROG, немає скороченого посилання, немає облікового запису й немає чого вимкнути чи дати спливти. Код, створений сьогодні, вестиме до того самого вмісту й через десять років, існуватиме цей сайт чи ні.
Це протилежність динамічного чи стежного QR-коду, який кодує посилання на чужий сервер і перестає працювати тієї миті, коли та служба закриється, змінить ціни або втратить домен.
Що він уміє закодувати
Посилання, звичайний текст, дані Wi-Fi, контакт vCard, електронну пошту, SMS, телефон, WhatsApp, географічне місце та подію календаря. Кожен тип має власну форму, і кожне поле перевіряється щодо формату, у який його буде закодовано, тож код Wi-Fi із паролем і візитівка з іменем виходять правильно складеними.
Кодувальник
Повний кодувальник ISO/IEC 18004, написаний як модуль цього сайту, а не підтягнутий як залежність: поділ введеного на числові, буквено-цифрові та байтові відрізки, вибір найменшої придатної версії, побудова потоку бітів, корекція Ріда-Соломона, розміщення даних зигзагоподібним обходом і, нарешті, перевірка усіх восьми масок із вибором тієї, що має найнижчий штраф, точно як вимагає стандарт. Написання кодувальника можна виправдати лише тоді, коли його перевіряють, а не йому вірять, тож готові матриці порівнюються біт за бітом зі зрілою еталонною реалізацією в усіх режимах, на всіх рівнях корекції та на низці версій, а до того ще й повний цикл декодування.
Перед тим як друкувати
QR-код, що виглядає правильно на екрані, може бути нечитабельним на папері, тому генератор оцінює результат, а не просто малює його:
- Контраст між двома вашими кольорами, з попередженням нижче приблизно 3:1, де зчитування починає давати збої.
- Інверсія, бо більшість декодерів очікує темне на світлому, а деякі зворотного не читають узагалі.
- Розмір модулів за обраного розміру експорту, бо символ може бути щільнішим за камеру, яка має його розрізнити.
- Зона спокою, світла рамка, за якою сканер знаходить початок символу. Стандарт вимагає чотирьох модулів; нижче він попереджає, а на нулі відмовляє.
- Покриття логотипом, виміряне щодо бюджету корекції помилок, а не прикинуте на око.
Покриття зростає з квадратом ширини, і саме це дивує: логотип завширшки 30 відсотків коду ховає 9 відсотків, а завширшки в половину ховає 25 відсотків. Додавання логотипа автоматично підвищує рівень корекції, логотип понад половину бюджету позначається, а понад увесь бюджет відхиляється.
Де це працює
Повністю у вашому браузері. Кодувальник, перегляд, накладання логотипа та експорт у PNG і SVG працюють локально, а за цією сторінкою немає жодної кінцевої точки API, тож ключ до Wi-Fi, приватний номер телефону чи візитівка не мають куди піти, навіть випадково. Доданий логотип зчитується через FileReader і ніколи не надсилається. Відкрийте мережеву панель браузера під час роботи з інструментом, і вона лишиться порожньою.