zaLinux.ru

Как создать QR-коды в командной строке Linux


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 кодов


Рекомендуемые статьи:

7 Комментарии

  1. root

    Спасибо, очень познавательно!

  2. Алексей

    Благодарю за полезную статью. Подскажите, пожалуйста, как сформировать команду в одной строке для формирования контакта из примера "Добавление контакта с QR-кодом" без использования текстового файла. Мне эту строку нужно формировать программно.

    1. Alexey (Автор записи)

      Приветствую! Вы можете передавать данные по стандартному вводу в качестве многострочной строки:

      echo "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 -s 6 -l H -o "contact.png"

      Вы можете использовать переменные:

      NICKNAME='MiAl'
      NAME='Alexey Miloserdov'
      PHONE='79051430000'
      JOB='IT specialist'
      ORG='MiAl Consorcium'
      EMAIL='proghoster@gmail.com'
      URL='HackWare.ru'
      echo "BEGIN:VCARD
      VERSION:2.1
      N:$NICKNAME
      FN:$NAME
      TEL;TYPE=voice,cell,pref:$PHONE
      TITLE:$JOB
      ORG:$ORG
      EMAIL:$EMAIL
      URL:$URL
      END:VCARD" | qrencode -s 6 -l H -o "contact.png"

      Если вам не нравится многострочная запись, то можете использовать символ переноса строки «\n», чтобы понять его суть, выполните следующую команду и посмотрите на её результат:

      echo -e "СТРОКА1\nСТРОКА2\nСТРОКА3\nСТРОКА4"

      Либо используйте << (here document), это есть во многих языках программирования:

      qrencode -s 6 -l H -o "contact.png"  <<_EOF_
      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
      _EOF_
      
  3. Алексей

    Алексей! благодарю за подробный развёрнутый ответ. Однако, не выходит каменный цветок. Мне нужно именно в одну строку - эта строка будет генерироваться из макроса OpenOffice и сгенерированные коды загружаться в документы. Если сканирую Ваш пример, то выходит вот что:

    Если же я вставляю строку

    qrencode -t SVG -s 6 -l H -o "/tmp/2/qr-code.svg" "BEGIN:VCARD\nVERSION:3.0\nN:Иванов;Иван;Иванович\nFN:Иванов Иван Иванович\nTITLE:Переводчик русского жестового языка 1 категории\nORG:Аттестован в ЦНИИ русского жестового языка\nURL:https://cnii-jest.ru/ru/institut/attestatsiya-perevodchikov/svidetelstva-ob-attestatsii\nEND:VCARD"

    1. Alexey (Автор записи)

      Прежде всего, у вас неправильная команда. Если вы её попробуете выполнить напрямую, без макроса, вы не получите положительного результата.

      Информация передаётся НЕ в виде строки в последнем аргументе, информация передаётся ИЗ файла или КАК БУДТО БЫ из файла (стандартный ввод).

      Попробуйте следующую команду в макросе:

      echo -e "BEGIN:VCARD\nVERSION:3.0\nN:Иванов;Иван;Иванович\nFN:Иванов Иван Иванович\nTITLE:Переводчик русского жестового языка 1 категории\nORG:Аттестован в ЦНИИ русского жестового языка\nURL:https://cnii-jest.ru/ru/institut/attestatsiya-perevodchikov/svidetelstva-ob-attestatsii\nEND:VCARD" | qrencode -t SVG -s 6 -l H -o "/tmp/2/qr-code.svg"

      Если опять что-то не получится, то будем разбираться дальше.

      Прежде чем прописывать команды в макросе, пробуйте их выполнить прямо в консоли, чтобы выявить ошибки.

  4. Алексей

    Продолжаю копать - нужно добиться формирование корректного контакта из однострочной команды. Экспериментальным путём выяснил, что  \n не воспринимается как разделитель строк и кодируется в один поток. Вопрос сводится к тому, что использовать в качестве разделителя строк в строке?

    1. Alexey (Автор записи)

      Вот пример многострочного текста (проверял в LibreOffice):

      sTEXT = "BEGIN:VCARD" & chr(13) & "VERSION:2.1" & chr(13) & "N:MiAl" & chr(13) & "FN:Alexey Miloserdov" & chr(13) & "TEL;TYPE=voice,cell,pref:79051430000" & chr(13) & "TITLE:IT specialist" & chr(13) & "ORG:MiAl Consorcium" & chr(13) & "EMAIL:proghoster@gmail.com" & chr(13) & "URL:HackWare.ru" & chr(13) & "END:VCARD"
      MsgBox sTEXT

      Но передать это в Shell у меня не получилось.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *