QArtText: QR коды для чтения невооружённым глазом - QubStore

QArtText: QR коды для чтения невооружённым глазом

Проще всего добавить визуальную информацию для людей, отредактировав готовый QR код. Данные там хранятся с кодами коррекции ошибок Рида-Соломона, поэтому QR код читается даже с искажениями. Но если искажений много, то код будет распознаваться хуже или перестанет распознаваться совсем.

Поэтому лучше менять QR код так, чтобы коды корреции ошибок сохранялись.

Пример QArt

Первым это придумал делать Russ Cox. Его QArt добавляет в хвост URL цифры, которые не используются браузером, но после превращения в QR код делают его похожим на заданную картинку.

Биты коррекции ошибок считаются линейными операциями над полем Галуа. Этот процесс обратимый, можно по заданным значениям битов коррекции ошибок найти соответствующие им исходные данные, решив систему линейных уравнений.

К сожалению, разрешения получившегося кода для нормальной картинки маловато. Представление картинок в виде пикселей при низком разрешении чисто алгоритмически очень сложно. Для этого надо хорошо представлять себе, как их интерпретирует человеческий мозг. Недостаточно найти представление, которое наиболее близко к исходной картинке. Оно так же должно отличаться от других объектов, с которыми человеческий мозг может их перепутать. Поэтому спрайты старых компьютерных игр и шрифты для дисплеев с низким разрешением рисовали побитно вручную, а не просто оцифровывали векторную графику или картинку с высоким разрешением.

QArtText: QR коды для чтения невооружённым глазом

QR код, который ведёт на https://qarttext.pages.dev

QArtText вместо картинки берёт текст и рисует его прямо внутри QR кода шрифтом, оптимизированным под экран с низким разрешением.

Вместо хвоста URL он размещает визуальную информацию в байтах после терминатора, которые декодеры не используют. Таким способом можно кодировать не только URL, но и другие виды информации, например, номер телефона или пароль Wi-Fi.

Результат можно поредактировать вручную. Например, подвигать текст по картинке (при этом коррекция ошибок пересчитываются автоматически) или даже перекинуть отдельные пиксели (при этом коррекция ошибок не пересчитывается, но показывается количество сломанных слов).

Полученный QR код можно сохранить как битмап (PNG), вектор (SVG) или в виде команд для резака винила (DXF).

QArtText работает в браузере как PWA, данные никуда не посылает. Исходный код на GitHub. Попробуйте.

Ссылка на основную публикацию