Pregătești
Ви обираєте вміст коду або файл, який хочете передати.
Інструменти в браузері Instrument public
MEGA QR містить генератор кодів і інструмент оптичного передавання. Ви створюєте код для посилання, Wi-Fi або контакту; для передавання екран показує послідовність кодів, яку камера іншого пристрою відновлює у файл.

MEGA QR
Ви обираєте вміст коду або файл, який хочете передати.
Генератор створює зображення QR. Оптичне передавання показує послідовні кадри.
Камера зчитує код або збирає кадри, доки не зможе відновити файл.
Посилання, Wi-Fi, контакт та інші типи вмісту; експорт PNG або SVG.
Дані передаються між екраном і камерою без мережевого з’єднання між пристроями.
Генерація та відновлення виконуються в браузері, без облікового запису користувача.
Оптичне передавання залежить від камери, освітлення, відстані та екрана. Пристрій, що передає, не отримує підтвердження прийому. Код, показаний публічно, можуть прочитати ті, хто його бачить.
MEGA QR детально
MEGA QR — це два інструменти на одному домені, і другий зовсім не схожий на перший. Генератор створює QR-коди для восьми типів вмісту: посилання, текст, WiFi, візитна картка, WhatsApp, email, SMS, телефон і координати. Оптичне передавання переносить цілий файл з екрана на камеру без кабелю, без Bluetooth, без мережі між двома пристроями.
Обидва працюють повністю в браузері. Сторінки не надсилають жодних запитів до третіх сторін, а два бінари WebAssembly, від яких залежить передавання, постачаються з public/wasm/, а не з CDN — інакше обіцянка, що нічого не залишає пристрій, була б хибною. Пароль WiFi, введений у генераторі, ніколи не потрапляє на сервер.
Ідея, яку варто зрозуміти щодо передавання: екран випромінює світло, камера його читає, і приймач ніяк не може нічого запросити у відповідь. Зворотного каналу не існує. Із цього випливає все решта — кадри описують самі себе, їхній порядок не має значення, будь-яка достатньо велика підмножина відновлює файл, а відправник ніколи не може знати, чи щось дійшло.
Link, text, WiFi, vCard, WhatsApp, email, SMS, телефон і геолокація. Коли ви додаєте логотип, рівень корекції помилок примусово переходить на H, найвищий — логотип робить дірку в зоні даних, і код інакше не виживе. Логотип обмежено 35% площі, з попередженням від 30%. Експорт рендериться окремо від попереднього перегляду, щоб PNG на 4096 px не впливав на те, що на екрані.
Бібліотека генерації, qr-code-styling 1.9.2, перетворює текст через charCodeAt(i) & 0xFF і мовчки обрізає кожен румунський діакритичний знак і всю кирилицю: «Ștefan Țurcanu» сканувалося назад як «tefan urcanu». Ми кодуємо UTF-8 ще до того, як вона це бачить, щоб їй уже не було що обрізати. Payload-и WiFi і vCard теж екрануються — один «;» у паролі або кома в назві компанії інакше псували б код, без жодного знака.
Файл пакується в конверт (назва, тип MIME, розмір, SHA-256), стискається gzip, якщо виходить меншим, потім передається на RaptorQ (RFC 6330). Кожен кадр має фіксований заголовок із 20 байтів і один або кілька пакетів. Не має значення, які саме кадри ви зловили, має значення скільки: будь-яка достатньо велика підмножина відновлює файл. Виміряна за реально відрендереними пікселями, надлишковість RaptorQ становить 1,000x — LT-коди, які використовують еталонні проєкти, вимагають 1,15x.
Другий режим надсилання — це фіксований цикл, що повторюється без кінця, без сесії й без когось, хто натискає старт. Довжина циклу подорожує в кожному кадрі, тож перехожий, який наводить камеру, знає з першого спійманого коду, скільки все триває, замість того щоб бачити кружечок. Референтна конфігурація — 36 кадрів при 12 на секунду — це три секундний цикл, який переносить 25 KB з одного простого чорно-білого коду. Повне меню або повний розклад станції.
Кількість кодів на екрані, колір і версія QR — це три різні обмеження, і вони налаштовуються окремо. Шкала щільності має 29 кроків, від v10 на одній смузі (7 KB/s при 30 кадрах на секунду) до v39 на чотирьох смугах у кольорі (959 KB/s). Є також повна шкала без кольору, до 320 KB/s, бо камера, у якої помирає хромінанс, не повинна застрягати на одній смузі.
Дані та робота
Від дослідження до впровадження
Код QR веде до короткого вмісту і, якщо це посилання, до сторінки, яку ви зможете змінити пізніше — надрукований код сам не змінює своє призначення. Оптичний перенос переміщує файл між двома пристроями, яким не дозволено або неможливо спілкуватися через мережу. Це різні завдання, і плутанина між ними трапляється найчастіше.
Для друку: контраст, кінцевий розмір, вільна зона навколо, протестовано в розмірі, в якому його буде наклеєно. Для переносу: наскільки великим припадає модуль на сенсор камери. Під жорсткою моделлю лінзи (зміщена на один піксель решітка хромінансу плюс розмиття 3x3) колір повертає всі три коди лише на 4 пікселі пристрою на модуль і абсолютно нічого на 2. Це справжня межа, і саме тому колір — вибір людини, а не контролера.
Наш набір проходить через справжній ланцюг камер — кадри записуються як YUV 4:2:0 і передаються в Chrome як фальшива webcam, тож субдискретизація хромінансу є реальною. Чого там немає: об’єктива, відбиттів, руху, роликового затвора. Десять хвилин із справжнім телефоном дають першу чесну цифру і є наступним кроком у нашому списку роботи, а не деталлю.
Через симульований ланцюг камери, на 10 кадрів за секунду, коли коди заповнюють більшу частину зображення на 3-5 пікселів камери на модуль, усі чотири конфігурації вийшли з перевіреним хешем: чорно-білий на одній смузі 15,8 KB/s, чорно-білий на чотирьох смугах 37,7 KB/s, колір на одній смузі 40,1 KB/s, колір на чотирьох смугах 115,7 KB/s. Колір на одній смузі перевершує чорно-білий на чотирьох. Рівень пропусків був нульовим усюди. Пам’ятайте, звідки взялися цифри: геометрично ідеальні кадри, без об’єктива і без руху. Справжній телефон ще не став перед ними.
Від камери вимагається 1920x1080 на 30 кадрів за секунду, з пріоритетом для задньої; якщо Android відхиляє обмеження, переходимо на будь-яку камеру. Кожен захоплений кадр зменшується до 1280 px по довгій стороні перед декодуванням. Що справді має значення, то це не роздільна здатність, а скільки пікселів сенсора припадає на модуль: чорно-білому потрібно приблизно три, кольору — приблизно вдвічі більше, бо відеоланцюг телефона зазвичай видає 4:2:0 і вдвічі зменшує обидві площини кольору в обох напрямах. Тонка кольорова деталь — перше, що реальна камера руйнує.
Бо єдине, що може виміряти пристрій, який надсилає, — це скільки символів згенерували його власні кодери порівняно з тим, скільки в нього попросили, — твердження про процесор, а не про камеру за два кулаки. Ноутбук ніколи не пропускає сходинку, тож контролер, який читає «нуль пропусків» як «ще далі», піднімається до вершини й виводить на екран чотири коди, що змінюються тридцять разів на секунду, які неможливо відсканувати. Це справді було доставлено одного разу, і людина знайшла це за хвилину. Тепер автоматичний режим обмежений однією смугою, чорно-білим, версією 26 і 15 кадрами за секунду. 15 — не кругле число: камера телефона записує на 30 і не синхронізована з екраном, тож кадр має залишатися показаним дві послідовні експозиції — 67 ms — щоб бути захопленим повністю.
Нічого особливого, і в цьому весь зміст. Немає номерів порядку для відновлення. Кодувальник створює пакети виправлення у співвідношенні 2x до джерельних символів — виміряно на цьому коді: при 60% втраті кадрів набір приблизно 2x K відновлює 2 MB без повторного показу списку. Абсолютний поріг — 60.000 пакетів; понад нього відправник просто частіше повторює список, що коштує часу, а не пам’яті. Якщо ж усе-таки щось піде не так, хеш SHA-256 це ловить, і передача явно завершується помилкою замість того, щоб доставити пошкоджений файл.
Ні, і це не недогляд. Немає каналу зворотного зв’язку — екран випромінює світло, а світло не повертається з підтвердженнями. Завершення видно на пристрої, який приймає. Будь-який інтерфейс, що стверджував би протилежне, брехав би, і в нас уже був одного разу тест, який давав саме той доказ, якого продукт ніколи не має: симуляція обчислювала свою частку промахів із того, що симульована камера спромоглася розв’язати. Оце і є канал зворотного зв’язку. Коли тест і доставлений код не погоджуються щодо того, що можна знати, тест і є тим, хто бреше.
32 MB, відхиляється під час вибору, якщо більший. Обмеження не походить із протоколу, а з пам’яті вкладки браузера: RaptorQ матеріалізує всі пакети одразу, а файл на 50 MB за коефіцієнта 2x означав би 150 MB живих масивів, достатньо, щоб убити вкладку на телефоні. Кодування виконується синхронно в основному потоці, виміряно як 2,5 секунди для 32 MB на комп’ютері. Те, що фактично передається, — не розмір файла: пакунок стискається gzip перед RaptorQ, тож таблиця на 1 MB — це кілька кілобайт пакетів, а фотографія на 1 MB — це мегабайт пакетів.
Ні, ані те, ані те. Немає облікового запису і немає підписки. Після першого візиту сторінки працюють без мережі, тому що все — включно з двома бінарними файлами WebAssembly — подається з власного домену. Варто також сказати те, чого ми навчилися дорогою: зареєстрований service worker не означає підтримку offline. Під час першого завантаження сторінка і її ресурси приходять до того, як worker бере контроль, тож його handler ніколи їх не бачить. Сторінка повідомляє про власні ресурси через Performance API замість того, щоб припускати.
Ілюстративний приклад
Сценарій використання, без даних клієнта чи приписаних комерційних результатів.
Екран на станції або у вітрині має дати перехожим файл — повний розклад, меню, форму — без public WiFi, без облікового запису і без того, щоб хтось щось натискав.
Екран запускає карусель: 36 кадрів по 12 за секунду, три секундний оберт, що повторюється без кінця. Щільність фіксована на час каруселі, бо оберт — це обіцянка лише тоді, коли його довжина зберігається. Довжина оберту мандрує в кожному кадрі, тож телефон, який зловив перший код, одразу знає, скільки все триває.
Перехожий знімає три секунди й отримує 25 KB, відновлені у своєму браузері, перевірені за SHA-256, з одного простого чорно-білого коду. Екран не дізнається, що його прочитали, і не може.
Ce este necesar:Un ecran care poate ține un cadru afișat 83 ms fără sfâșiere, lumină în care codul nu e spălat de reflexii, și o cameră care rezolvă aproximativ trei pixeli de senzor per modul. Cifra de 25 KB e derivată din aceleași funcții pe care le folosește expeditorul, nu tastată de mână alături de ele.
Можливості співпраці
Коди для доступу до публічної інформації, інструкції або контакти; оптичне передавання файлів між сумісними пристроями з оцінкою політик безпеки установи.
Ми визначаємо пілот навколо реального процесу: користувачі, дані, інтеграції, витрати та критерії приймання. Розширення відбувається після оцінки результату.
Визначаємо вимоги до доступності, хостингу, захисту даних та інтероперабельності. Будь-яке з’єднання з послугами AGE або STISC потребує валідації придатності, доступу та схвалень.
Це сценарії адаптації, а не заяви про наявні контракти чи партнерства. Запропоновані функції підтверджуються в межах робочої сфери проєкту.
Обговорити пілотonGDPR.md перевіряє публічну поверхню сайту: cookie-файли, трекери, форми і документи інформування.
Публічна платформаMegaforms досліджує збір відповідей через діалогові форми, включно з голосовими відповідями і транскрибуванням.
Розробка та демонстраціїМи будуємо платформу для цифрових меню та операцій, доступних через QR.
Розробка та демонстраціїРозкажіть про свій процес. Разом визначимо, що варто збудувати, що можна підключити і як перевіримо результат.