QR-коды могут сделать гораздо больше, чем просто перенаправить вас на веб-сайт. А ещё их легко создавать в командной строке Linux. Мы покажем вам, как это сделать.
QR-коды
Коды быстрого ответа (QR) переживают возрождение благодаря их использованию в приложениях для отслеживания COVID-19 во многих странах. Это удобный способ поделиться информацией и вызвать отклик у людей. У каждого есть мобильный телефон, поэтому у всех есть подходящий сканер. Существует множество бесплатных программных приложений для сканирования QR-кодов и штрих-кодов, поэтому не требуется дополнительное оборудование и затраты на программное обеспечение.
С момента их изобретения в 1994 году высоко оценённой командой Denso Wave, дочерней компании Toyota, QR-код нашёл много новых применений.
QR-код может содержать гораздо больше информации, чем штрих-код, и благодаря его конструкции сканер может определить, где находится QR-код, и автоматически ориентировать изображение при его считывании и декодировании.
Эти характеристики сделали его таким успешным в его первоначальной роли отслеживания запасов, сборок и компонентов на заводских производственных объектах. Не имеет значения, если QR-код или предмет, к которому он прикреплён, не идеально выровнены, когда он проезжает по конвейерной ленте. QR-сканер может обнаружить и прочитать код независимо от его ориентации.
Почему бы не использовать онлайн-генератор QR-кода? Их много, но многие из них ставят условия, что им разрешено сохранять и хранить информацию, которую вы им предоставляете, и они могут делать с данными всё, что захотят. Если вы собираетесь создавать QR-коды с личной или конфиденциальной информацией, такой как контактные данные или данные о подключении к Wi-Fi, это создаёт значительную угрозу безопасности.
Все ваши данные остаются под вашим контролем, если вы используете инструмент командной строки, такой как qrencode. Он также позволяет создавать сценарии и псевдонимы для программного создания QR-кодов.
Связанная статья: QR-коды могут быть опасными
Использование QR-кодов
Вне заводов и производственной среды QR, вероятно, чаще всего используется в рекламной литературе, такой как листовки, брошюры и плакаты. Их также часто можно увидеть на упаковке продуктов. В этих сценариях QR-код обычно содержит унифицированный указатель ресурса (URL) или веб-адрес. Приложение для сканирования открывает веб-сайт для пользователя.
Когда вы сканируете QR-код своим мобильным телефоном, он определяет тип данных, которые были закодированы, и предлагает выполнить соответствующее действие. Например, если данные представляют собой событие календаря, вас спросят, хотите ли вы добавить событие в свой календарь.
QR-код может запускать следующие действия:
- Отображение текста.
- Навигация к точке на карте.
- Телефонный звонок.
- Отправка SMS-сообщения.
- Отправка электронного письма.
- Открытие URL-адреса для отображения веб-страницы или загрузки файла.
- Добавление контакта в адресную книгу.
- Добавление события в календарь.
- Подключение к сети Wi-Fi.
Емкость QR-кода составляет до 7000 цифр или 4000 символов и отличается высокой надежностью.
Установка qrencode
qrencode — это универсальный, быстрый и многофункциональный генератор QR-кода. Он предоставляет библиотеку, которую можно связать с вашими собственными программами, чтобы инкапсулировать технологию генерации QR-кодов в ваши собственные приложения. Он также предоставляет утилиту командной строки, которую мы собираемся использовать.
Чтобы установить qrencode в Debain, Linux Mint, Ubuntu, Kali Linux и их производные выполните эту команду:
sudo apt install qrencode
На Arch Linux, Manjaro, BlackArch и их производных выполните:
sudo pacman -Sy qrencode
Чтобы установить qrencode в Fedora, используйте эту команду:
sudo dnf install qrencode
Параметры qrencode
Есть два разных набора параметров, которые нам нужно передать qrencode. Один набор относится к созданию и кодированию QR-кодов, а другой определяет данные, которые мы хотим, чтобы QR-код содержал.
Параметры, которые влияют на создание QR-кода, определяют такие вещи, как размер QR-кода, цвет клетчатого узора и фона, а также настройки исправления ошибок.
Назначение QR-кода — например, отправляет ли он SMS-сообщение или предлагает добавить контакт в адресную книгу — определяется информацией внутри QR-кода. Это не зависит от способа создания QR-кода. Ключевые слова и имена полей определяют тип закодированного контента и позволяют программному обеспечению сканирования определять, что ему следует делать с полученной информацией.
Использование qrencode
Обычный текст QR-коды
Самая простая форма QR-кода содержит простой текст. Его можно использовать для передачи конечному пользователю любой текстовой информации. Мы используем следующие параметры qrencode:
- -s 6: устанавливает размер блоков в клетчатом шаблоне QR. Предоставляемое вами число задаёт размер в пикселях длины одной стороны блока.
- -l H: устанавливает уровень исправления ошибок. Мы можем использовать следующие варианты: «L» для низкого, «M» для среднего, «Q» для довольно высокого и «H» для высокого или максимального. Различные уровни исправления ошибок могут справиться с разным объёмом повреждений или нечёткостью при сканировании QR-кода. «Низкий» позволяет успешно сканировать код, если до семи процентов кода скрыто или повреждено. «Средний» увеличивает этот показатель до 15 процентов. «Достаточно высокий» может справиться с повреждением до 25 процентов кода. «Высокий» уровень может справиться с колоссальными 30 процентами повреждений или неразборчивости при сканировании QR-кода. Чем больше исправлений ошибок вы используете, тем больше будет общий QR-код. Это связано с тем, что ему необходимо хранить избыточную информацию, что означает, что в шаблоне больше блоков.
- -o "text.png": параметр вывода позволяет указать имя сгенерированного изображения. По умолчанию это изображение Portable Network Graphics (PNG). Если вы используете параметр -t (тип), вы можете изменить вывод на различные форматы, включая инкапсулированный постскрипт (EPS), масштабируемую векторную графику (SVG) и множество различных вариантов вывода на основе символов Американского национального института стандартов (ANSI).
- Текст для кодирования предоставляется последним и заключён в кавычки.
Команда:
qrencode -s 6 -l H -o "text.png" "Этот тип QR содержит обычный текст. Этот текст отображается пользователю при сканировании QR-кода. Никакое другое действие автоматически не запускается."
Эта команда создаёт этот QR-код:
При сканировании текст извлекается и отображается в программе сканирования.
Приложение для сканирования предоставит несколько предложений, которые вы, возможно, захотите сделать. В этом случае — в этом конкретном приложении — вы можете выполнить поиск в Интернете по полученному тексту или выбрать, чтобы поделиться текстом с другими.
Добавление цвета
Параметры --foreground и --background позволяют вам установить цвета для шаблона QR-кода и фона. Вы можете указать цвет в шестнадцатеричном представлении цветовой модели RGB или восьмизначном шестнадцатеричном представлении цветовой модели RGBA.
Мы используем обозначение RGB. В Интернете есть удобные таблицы для поиска цветовых кодов. Передний план будет оттенком синего, а фон — белым.
qrencode -s 6 -l H --foreground="3599FE" --background="FFFFFF" -o "blue.png" "Этот QR-код будет бело-голубым."
QR-код создаётся в выбранном нами оттенке синего.
Он сканирует так же, как и любой другой QR-код. Если вы все же измените цвета, убедитесь, что у вас есть достаточный контраст между передним планом и фоном, чтобы приложения сканирования могли надёжно выделить клетчатый узор.
Сохранение местоположения в QR-коде
Вы можете легко сохранить местоположение чего-либо в QR-коде.
- Информация, которую мы храним, должна начинаться с ключевого слова geo.
- Используйте двоеточие «:», чтобы отделить ключевое слово от данных о местоположении.
- Местоположение необходимо указывать в десятичных градусах.
- Не оставляйте пробелов во всей строке и используйте запятую «,» между значениями широты и долготы.
Параметры qrencode такие же, как и раньше. Мы меняем назначение QR-кода, просто изменяя информацию, хранящуюся в нем.
qrencode -s 6 -l H -o "geo.png" "geo:12.459444,99.978611"
Это создаёт этот QR-код. Расположение — место на берегу моря в тропиках.
При сканировании пользователю предлагается возможность посмотреть местоположение на карте или проложить маршрут к нему.
Сохранение номера телефона в QR-коде
Чтобы сохранить номер телефона внутри QR-кода, используйте ключевое слово tel, двоеточие «:» и номер телефона без пробелов. Лучше не использовать дефисы и другие знаки препинания в числе, потому что некоторые приложения для сканирования могут запутаться. Вместо «(123) 456–7890» используйте «1234567890».
qrencode -s 6 -l H -o "phone.png" "tel: 5555555555"
Это QR-код, сгенерированный этой командой:
При сканировании приложение предлагает добавить этот номер в качестве контакта — вам нужно будет указать имя самостоятельно; другая опция — позвонить по номеру.
Отправка электронного письма с помощью QR-кода
Вы можете добавить информацию к QR-коду, чтобы приложение для сканирования предлагало отправить электронное письмо. Вы можете указать адрес электронной почты получателя, тему и текст сообщения.
qrencode -s 6 -l H -o "email.png" "mailto:proghoster@gmail.com?subject=Linux&body=Статьи по линуксу классные!"
- Ключевое слово для использования — mailto с двоеточием «:», отделяющим его от адреса электронной почты.
- Используйте «?subject=» для обозначения темы. Не ставьте пробелы перед или после флага «?subject=».
- Используйте «&body=», чтобы определить содержание сообщения электронной почты. Не ставьте пробелы перед или после флага «&body=».
Это результирующий QR-код.
При сканировании приложение предлагает отправить электронное письмо или добавить адрес электронной почты в качестве контакта.
QR-код веб-сайта
Чтобы направить пользователя на веб-сайт или другой URL-адрес, используйте ключевое слово http или https, двоеточие «:» и веб-адрес без пробелов.
qrencode -s 6 -l H -o "URL.png" "https://zalinux.ru"
Эта команда создаёт этот QR-код.
При сканировании кода приложение предлагает открыть ссылку.
Отправка SMS или MMS-сообщения с помощью QR-кода
Форматы для отправки сообщения службы коротких сообщений (SMS) или службы обмена мультимедийными сообщениями (MMS) идентичны. Используйте ключевое слово smsto, двоеточие ":", номер телефона, запятую "," без пробелов, а затем тело сообщения.
qrencode -s 6 -l H -o "SMS.png" "smsto:5555555555,Это текст SMS-сообщения."
Эта команда создаёт этот QR-код:
При сканировании пользователь может отправить SMS или MMS-сообщение.
Подключитесь к сети Wi-Fi с помощью QR-кода
Можно закодировать детали сети Wi-Fi в QR-коде. Посетители могут сканировать QR-код, чтобы легко подключиться к гостевому Wi-Fi.
Ключевое слово — WIFI, за которым следует двоеточие «:» и несколько других параметров.
- Т: Тип безопасности. Это может быть WEP, WPA или WPA2. Обратите внимание, что между буквой «T» и значением безопасности стоит двоеточие, а также точка с запятой «;» после настройки безопасности.
- S: идентификатор набора услуг (SSID) сети Wi-Fi, проще говоря, имя Wi-Fi сети. Обратите внимание, что между «S» и SSID стоит двоеточие, а также точка с запятой «;» После SSID.
- P: пароль или ключ безопасности сети Wi-Fi. Обратите внимание, что между буквой «P» и ключом безопасности стоит двоеточие, а также две точки с запятой «;» после пароля для входа в Wi-Fi сеть.
Команда:
qrencode -s 6 -l H -o "wifi.png" "WIFI:T:WPA;S:СЕТЬ;P:ПАРОЛЬ;;"
Поместите свой настоящий SSID и ключ безопасности там, где в команде стоят СЕТЬ и ПАРОЛЬ. QR-код выглядит так:
При сканировании QR-кода приложение предлагает подключиться к сети Wi-Fi или скопировать пароль в буфер обмена.
Добавление контакта с QR-кодом
Контактные данные в формате vCard могут быть добавлены к QR-коду и отсканированы в адресную книгу пользователя. Это устраняет риск опечатки. Можно сохранить много информации, поэтому лучше всего добавить детали в файл и перенаправить этот файл в qrencode.
Этот текст был добавлен в файл с именем «contact.txt».
BEGIN:VCARD VERSION:2.1 N:MiAl FN:Alexey Miloserdov TEL;TYPE=voice,cell,pref:79051430000 TITLE:IT specialist ORG:MiAl Consorcium EMAIL:proghoster@gmail.com URL:HackWare.ru END:VCARD
Мы можем перенаправить этот файл в qrencode следующим образом:
qrencode -s 6 -l H -o "contact.png" < contact.txt
Создаваемый им QR-код содержит намного больше блоков в шаблоне кода, чем мы видели до сих пор. Это потому, что в шаблоне закодировано больше информации, и мы используем самый высокий уровень исправления ошибок.
Как и следовало ожидать, приложение для сканирования предлагает добавить его в качестве контакта. Но поскольку он обнаружил, что в информации есть номер телефона, он также предлагает позвонить по нему. Точно так же он также обнаружил адрес электронной почты и предлагает отправить электронное письмо.
Добавление календарного события с помощью QR-кода
Добавление события в календарь очень похоже на добавление контакта. Данные лучше всего добавлять в файл, который перенаправляется в qrencode.
Этот текст был добавлен в файл с именем «event.txt».
BEGIN:VEVENT SUMMARY:Корпоративный пикник DESCRIPTION:Развлечения, еда и игры на солнце LOCATION:Eastwood Park DTSTART:20210710T103000 DTEND:20210710T154500 END:VEVENT
Это было перенаправлено в qrencode следующим образом:
qrencode -s 6 -l H -o "event.png" < event.txt
Это QR-код, содержащий календарное событие:
Приложение для сканирования расшифровывает событие следующим образом:
Пользователь может добавить событие в свой календарь, нажав на значок «Добавить событие».
Так много применений
QR-коды можно разместить где угодно: в подписях электронной почты, в рекламной литературе, на плакатах, листовках, в виде наклеек на оборудовании, на веб-сайтах, на упаковке продуктов, на этикетках продуктов и т. д.
Они могут предоставлять всевозможную информацию или функции. QR-код на наклейке, прикреплённой к устройству, может открыть последнюю версию руководства по обслуживанию или руководства пользователя.
На плакате может быть QR-код, чтобы добавить мероприятие в ваш календарь, и ещё один QR-код, чтобы указать направление к месту проведения.
Все, что нужно, — это немного творчества, немного ноу-хау и qrencode.
Онлайн сервисы генерации QR кодов
- Генератор QR-кода для текста
- Генератор QR-кода для координат
- Генератор QR-кода с номером телефона
- Генератор QR-кода с адресом сайта или файлом для загрузки
- SMS-сообщение в QR коде
- E-mail в QR коде
- Генератор QR кода для подключения к Wi-Fi
- QR код для добавления контакта в адресную книгу
- QR код для добавления события в календарь
Связанные статьи:
- Распознавание текста в Linux (OCR) (50%)
- Автосумма в Calc (LibreOffice) (50%)
- Как сделать брошюру в LibreOffice (50%)
- Миллиметровая и сантиметровая бумага для Writer (линованные листы в LibreOffice) (50%)
- Альтернатива Odin для Linux (50%)
- Руководство по ImageMagick: установка, использование и решение проблем (RANDOM - 50%)
Спасибо, очень познавательно!
Благодарю за полезную статью. Подскажите, пожалуйста, как сформировать команду в одной строке для формирования контакта из примера "Добавление контакта с QR-кодом" без использования текстового файла. Мне эту строку нужно формировать программно.
Приветствую! Вы можете передавать данные по стандартному вводу в качестве многострочной строки:
Вы можете использовать переменные:
Если вам не нравится многострочная запись, то можете использовать символ переноса строки «\n», чтобы понять его суть, выполните следующую команду и посмотрите на её результат:
Либо используйте << (here document), это есть во многих языках программирования:
Алексей! благодарю за подробный развёрнутый ответ. Однако, не выходит каменный цветок. Мне нужно именно в одну строку - эта строка будет генерироваться из макроса OpenOffice и сгенерированные коды загружаться в документы. Если сканирую Ваш пример, то выходит вот что:
Если же я вставляю строку
Прежде всего, у вас неправильная команда. Если вы её попробуете выполнить напрямую, без макроса, вы не получите положительного результата.
Информация передаётся НЕ в виде строки в последнем аргументе, информация передаётся ИЗ файла или КАК БУДТО БЫ из файла (стандартный ввод).
Попробуйте следующую команду в макросе:
Если опять что-то не получится, то будем разбираться дальше.
Прежде чем прописывать команды в макросе, пробуйте их выполнить прямо в консоли, чтобы выявить ошибки.
Продолжаю копать - нужно добиться формирование корректного контакта из однострочной команды. Экспериментальным путём выяснил, что \n не воспринимается как разделитель строк и кодируется в один поток. Вопрос сводится к тому, что использовать в качестве разделителя строк в строке?
Вот пример многострочного текста (проверял в LibreOffice):
Но передать это в Shell у меня не получилось.