Чтение и создание QR-кодов в Python с помощью QRtools

Опубликовано: 14 Июля, 2021


В этой статье рассказывается об использовании библиотеки python: qrtools. Эта библиотека может использоваться как для чтения QR-кодов, так и для их создания.

Что такое QR-коды?

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

Установка и зависимости

  1. 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 подушка
    
  2. Windows: qrtools можно установить в Windows, загрузив файл отсюда. При загрузке и извлечении выполните следующую команду из папки
    установка python setup.py
    

Создать QR-код

qrtools содержит класс QR (можно посмотреть в исходном коде), для которого мы должны изначально создать объект. Объект принимает следующие аргументы

  1. данные
  2. pixel_size
  3. уровень
  4. margin_size
  5. тип данных

Чтобы создать 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
my_QR = QR(data = [u "geeksforgeeks" , u " https://www.geeksforgeeks.org/ " ],
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, и помогите другим гикам.

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