Чтение и создание QR-кодов в Python с помощью QRtools
В этой статье рассказывается об использовании библиотеки python: qrtools. Эта библиотека может использоваться как для чтения QR-кодов, так и для их создания.
Что такое QR-коды?
QR-код или код быстрого ответа является товарным знаком для типа двухмерного штрих-кода. Двухмерные штрих-коды похожи на одномерные штрих-коды, но могут хранить больше информации на единицу площади.
Установка и зависимости
- Debian Linux: qrtools можно установить в системах Linux на основе debian с помощью следующих команд
sudo apt-get update sudo apt-get install python-qrtools
Также должны быть установлены следующие зависимости
[sudo] pip install pypng [sudo] pip install zbar [sudo] pip install подушка
- Windows: qrtools можно установить в Windows, загрузив файл отсюда. При загрузке и извлечении выполните следующую команду из папки
установка python setup.py
Создать QR-код
qrtools содержит класс QR (можно посмотреть в исходном коде), для которого мы должны изначально создать объект. Объект принимает следующие аргументы
- данные
- pixel_size
- уровень
- margin_size
- тип данных
Чтобы создать QR-код с настройками по умолчанию, мы должны просто указать данные при создании объекта. Обратите внимание, что данные должны быть объектом Unicode, если будут использоваться объекты, отличные от ASCII.
# Python program to generate QR code from qrtools import QR # creates the QR object my_QR = QR(data = u "Example" ) # encodes to a QR code my_QR.encode() |
Если программа работает успешно, она возвращает значение 0, а QR-код сохраняется в папке tmp. Чтобы узнать точное местоположение, используйте следующую команду
печать (my_QR.filename)
Пример вывода
/tmp/qr-1496334996.385343/7489ebbcc2a00056ddaaaac190bce473e5c03696ea1bd8ed83cf59a174283862.png
Теперь этот файл можно переместить в другую папку по нашему усмотрению.
# Python program to generate QR code from qrtools import QR import os my_QR = QR(data = u "Example" ) my_QR.encode() # command to move the QR code to the desktop os.system( "sudo mv " + my_QR.filename + " ~/Desktop" ) |
Значение пикселя QR-кода также можно изменить, указав значение во время создания QR-объекта. Размер по умолчанию, как правило, немного мал для чтения с помощью сканеров на смартфонах, поэтому размер около 10 будет идеальным для таких целей, например:
my_QR = QR (data = u "пример", pixel_size = 10)
Приведенный ниже QR-код имеет размер пикселя = 10 и закодирован с помощью URL-адреса.
Мы также можем добавить данные электронной почты, данные sms, данные mms, закладки и т. Д. В QR-код. Следующий фрагмент кода взят из исходного кода, в котором указаны различные типы данных, которые могут использоваться вместе с форматом данных, которые потребуются для его использования:
# use these for custom data formats eg. url, phone number, VCARD # data should be an unicode object or a list of unicode objects data_encode = { 'text' : lambda data: data, 'url' : encode_url, 'email' : lambda data: 'mailto:' + re. compile ( r '^mailto:' , re.IGNORECASE ).sub('', data), 'emailmessage' : lambda data: 'MATMSG:TO:' + data[ 0 ] + ';SUB:' + data[ 1 ] + ';BODY:' + data[ 2 ] + ';;' , 'telephone' : lambda data: 'tel:' + re. compile ( r '^tel:' , re.IGNORECASE ).sub('', data), 'sms' : lambda data: 'SMSTO:' + data[ 0 ] + ':' + data[ 1 ], 'mms' : lambda data: 'MMSTO:' + data[ 0 ] + ':' + data[ 1 ], 'geo' : lambda data: 'geo:' + data[ 0 ] + ', ' + data[ 1 ], 'bookmark' : lambda data: "MEBKM:TITLE:" + data[ 0 ] + ";URL:" + data[ 1 ] + ";;" , # phonebook or meCard should be a list of tuples like this: # [('N', 'Name'), ('TEL', '231698890'), ...] 'phonebook' : lambda data: "MECARD:" + ";" .join([ ":" .join(i) for i in data]) + ";" } |
Из приведенного выше кода мы наблюдаем различные типы данных, которые могут быть назначены и использованы при создании QR-кодов. Например, чтобы использовать закладку в качестве данных, мы должны предоставить данные в виде списка, состоящего из заголовка и URL-адреса. Для этого мы должны сделать следующее
# Python program to generate QR code from qrtools import QR # creates the QR object data_type = 'bookmark' ) # encodes to a QR code my_QR.encode() |
Прочитать QR-код
Сканирование и чтение QR-кода относительно просто. При создании QR-объекта мы должны просто указать путь к QR-коду в качестве аргумента. Допустим, мы пытаемся расшифровать QR-код, созданный в начале статьи.
# Python program to Scan and Read a QR code from qrtools import QR my_QR = QR(filename = "home/user/Desktop/qr.png" ) # decodes the QR code and returns True if successful my_QR.decode() # prints the data print (my_QR.data) |
Выход :
Пример
Мы также можем распечатать значения других параметров, переданных при создании QR-объекта для генерации QR-кода, например, используя тот же QR-код, сгенерированный в начале статьи, кроме того, добавление этих операторов печати даст следующий дополнительный вывод
печать (my_QR.data_type) печать (my_QR.pixel_size) печать (my_QR.margin_size)
Выход:
текст 3 4
Эта статья предоставлена Дипаком Шриватсавом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.