Pregătești
Вы выбираете содержимое кода или файл, который хотите передать.
Инструменты в браузере Instrument public
MEGA QR включает генератор кодов и инструмент оптической передачи. Вы создаёте код для ссылки, Wi‑Fi или контакта; для передачи экран показывает последовательность кодов, которую камера другого устройства собирает обратно в файл.

MEGA QR
Вы выбираете содержимое кода или файл, который хотите передать.
Генератор создаёт изображение QR. Оптическая передача показывает последовательные кадры.
Камера считывает код или собирает кадры, пока не сможет восстановить файл.
Ссылка, Wi‑Fi, контакт и другие типы содержимого; экспорт PNG или SVG.
Данные передаются между экраном и камерой, без сетевого соединения между устройствами.
Генерация и восстановление выполняются в браузере, без учётной записи пользователя.
Оптическая передача зависит от камеры, света, расстояния и экрана. Устройство, которое передаёт, не получает подтверждения приёма. Код, отображённый публично, может быть прочитан теми, кто его видит.
MEGA QR подробно
MEGA QR — это два инструмента на одном домене, и второй совсем не похож на первый. Генератор делает QR-коды для восьми типов контента: ссылка, текст, WiFi, визитная карточка, WhatsApp, электронная почта, SMS, телефон и координаты. Оптическая передача переносит целый файл с экрана на камеру, без кабеля, без Bluetooth, без сети между двумя устройствами.
Оба полностью работают в браузере. Страницы не делают никаких запросов к третьим сторонам, а два бинарных файла WebAssembly, от которых зависит передача, отдаются из public/wasm/, а не с CDN — иначе обещание, что ничего не уходит с устройства, было бы ложным. Пароль WiFi, введённый в генератор, никогда не попадает на сервер.
Идея, которую стоит понять о передаче: экран излучает свет, камера его читает, и получатель никак не может запросить что-либо обратно. Канала возврата нет. Из этого следует всё остальное — кадры описывают сами себя, их порядок не важен, любое достаточно большое подмножество восстанавливает файл, а отправитель никогда не может знать, дошло ли что-то.
Ссылка, текст, 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 до того, как это увидит она, так что ей уже нечего будет обрезать. Полезные данные 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 как поддельная веб-камера, так что субдискретизация хроминантности реальна. Чего в нём нет: объектива, отражений, движения, роллинг-шаттера. Десять минут с настоящим телефоном дают первую честную цифру и являются следующим шагом в нашем списке работ, а не деталью.
Через симулированный канал камеры, при 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 берёт управление, поэтому его обработчик их никогда не видит. Страница сообщает о своих ресурсах через Performance API вместо того, чтобы предполагать.
Показательный пример
Сценарий использования, без данных клиента или приписанных коммерческих результатов.
Экран на станции или витрина должны давать прохожим файл — полное расписание, меню, форму — без публичного 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.
Разработка и демонстрацииРасскажите о своём процессе. Вместе определим, что стоит построить, что можно подключить и как проверим результат.