Популярность QR-кодов в России выросла благодаря эпидемии коронавируса, когда для входа в любое общественное место нужно было иметь этот черно-белый квадратик. Но и после того, как болезнь чудесным образом исчезла из заголовков СМИ, использование QR-кодов не сошло на нет и сейчас, например, в крупных супермаркетах можно оплатить покупку по QR-коду, отсканировав его в банковском приложений.
Может показаться, что обычному человеку эти коды генерировать и использовать не нужно, но оказывается, что вариантов их применения огромное количество. Например, будучи еще учителем, я использовал их для того, чтобы раздавать детям онлайн-тесты, став автором на Дзене я первое время вставлял QR-код со ссылкой на канал в превью постов, оставаясь репетитором использую их для того, чтобы делиться ссылками на интересные материалы по истории и обществознанию. После полного перехода на Linux я обзавелся программой для генерации QR-кодов, которая была всегда под рукой для случая, когда такая генерация понадобится. Называлась она Qreator и относительно недавно перестала корректно работать. В поисках замены я нашел консольную утилиту Qrencode, которую использую до сих пор и про которую хочу рассказать вам.
Qreator и Qrencode - одного поля ягоды
Оказывается, что утилита, которую использовал ранее и которую использую сейчас основаны на одних и тех же инструментах: язык программирования Python и модуль к нему, который генерирует QR-код. Только в случае Qreator надстройкой над Python была графическая библиотека QT5, которая предоставляла пользовательский интерфейс. В Qrencode никакой надстройки нет, потому устанавливается и работает она намного шустрее.
Установка Qrencode
Под рукой у меня как всегда Manjaro Linux в качестве основного дистрибутива и Linux Mint 21 на виртуальной машине. На их примере покажу, как установить программу.
В Linux Mint достаточно открыть Менеджер программ и в поиск ввести название программы.
Если имеется огромное желание использовать терминал, то откройте его и введите следующую команду:
sudo apt install qrencode
В Manjaro Linux Qrencode оказался установленным «из коробки», но если у вас Archlinux-based дистрибутив, где утилиты не оказалось, то можно воспользоваться терминалом (или любым графическим менеджером, например, Pamac):
sudo pacman -S qrencode
Создаем QR-код
Синтаксис Qrencode очень прост и выглядит следующим образом:
qrencode "ТЕКСТ_ИЛИ_ССЫЛКА_ДЛЯ_ГЕНЕРАЦИИ" -o <путь_до_картинки_с_готовым_кодом>
Давайте создадим простой QR-код:
qrencode "КАНАЛ ПРОСТО КОД" -o $HOME/qr-png
Вам не кажется, что получившиеся изображения какие-то маленькие? Можно, конечно, воспользоваться графическим редактором и растянуть картинку до приемлемых размеров (качество при этом не потеряется, так как по-умолчанию используется высокая плотность пикселей). Другим вариантом будет использование ключа -v с указанием количества символов (квадратиков) в QR-коде. Попробуем повторить генерацию с новым ключом:
qrencode "КАНАЛ ПРОСТО КОД" -o $HOME/qr-png -v 40
Как видим, результат теперь является приемлемым и вполне распознается при помощи смартфона.
Расшифровка QR-кода в терминале
Можно выполнить обратный процесс и установить в свой дистрибутив утилиту для сканирования QR-код и просмотра его содержимого. Утилита называется Zbar. Установка в Linux Mint и Manjaro Linux также проста, как и установка Qrencode.
Как видим, в Manjaro пакет Zbar установлен по-умолчанию. Чтобы установить утилиту при помощи терминала введите следующие команды:
sudo apt install zbar-tools
sudo pacman -S zbar
После установки введите в терминале следующую команду:
zbarimg <путь_до_qr-кода>
Все работает, никаких ошибок не появляется, а значит мы сделали все правильно.
Подведем итог
Используя алиасы вы можете превратить создание QR-кодов в быстрое и простое занятие. Подробнее о том, как настроить алиасы при работе в терминале и зачем они нужны можете прочитать в заметке по ссылке ниже.
Естественно, есть онлайн-сервисы для генерации кодов, можно использовать Python-библиотеки напрямую, но как по мне, в терминале все это делать проще и быстрее.
Напишите в комментариях используете ли вы QR-коды и если да, то для каких целей. Кстати, в QR-код, который используется на превью к этой заметке я заложил слово, так что если вы пытливы и любопытны, то можете узнать какое и написать его в комментариях под этим постом.