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

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

Пример QArt
Пример QArt

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

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

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

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

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

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

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

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

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

Комментарии (8)


  1. Rsa97
    07.09.2026 14:36

    Ещё бы была гарантия, что QR-код ведёт именно туда, куда написано. А то на заборе тоже много чего пишут.


    1. dimview Автор
      07.09.2026 14:36

      Нонче верить никому нельзя, даже самому себе. Мне - можно.


  1. petropavel
    07.09.2026 14:36

    Классная идея, ага!


  1. dlinyj
    07.09.2026 14:36

    Прикольный проект, мне нравится!


  1. alexs963
    07.09.2026 14:36

    Русские буквы отображает знаками вопроса.


  1. dimview Автор
    07.09.2026 14:36

    Действительно, недосмотр. Спасибо. Теперь русские буквы добавлены в используемые шрифты и должны отображаться. Но надо проверить, все ли нормально выглядят и читаются


    1. alexs963
      07.09.2026 14:36

      Вместо русской т ставится английская. Ю выглядит странновато.


  1. sp402
    07.09.2026 14:36

    прЮвет ВОЛКУ!