Создаем QR-коды с помощью Python

Создаем QR-коды с помощью Python

Нас всюду окружают QR-коды. Это удобный способ передать пользователю ссылку на сайт в рекламе, пароль от Wi-Fi или страницу загрузки меню в кафе. Их используют, чтобы получить номер в очереди, подтвердить вакцинацию, быстро проверить документы. QR-коды на достопримечательностях позволяют загрузить их изображения, трехмерные модели, информацию и даже музыку (как, например, шопеновские лавочки в Варшаве), расширяющие наш опыт туризма. Они могут заменить увесистую стопку скидочных карточек и упростить авторизацию в мессенджере.

В профессиональной деятельности QR-коды массово используются для инвентаризации, маркировки продуктов и образцов. Такие задачи остро нуждаются в автоматизации. К счастью, в Python есть модуль qrcode, позволяющий превратить текст в симпатичные квадратики.

Создаем QR-коды

Для начала, нам нужно установить модуль qrcode. Он использует библиотеку Pillow, так что мы загрузим все разом:

pip install qrcode[pil]

Теперь нам даже необязательно писать программу, чтобы создать QR-код. Мы можем сделать это прямо в командной строке.

qr "https://okumy.com/" > okumy.png

В результате мы получим такое изображение:

image

В Python мы можем воспользоваться функцией qrcode.make():

import qrcode


img = qrcode.make('https://okumy.com/')
type(img)  # qrcode.image.pil.PilImage
img.save("okumy.png")

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

import qrcode


def main():
    start = int(input('Введите первый номер:'))
    stop = int(input('Введите последний номер:'))
    for i in range(start, stop + 1):
        value = '#' + str(i).rjust(8, '0')
        qrcode.make(value).save(value + '.png')


if __name__ == '__main__':
    main()

Теперь можно держать все инвентарные номера в базе данных, и управлять списанием прямо с телефона.

Продвинутые QR-коды

Если вы хотите большего, можно воспользоваться классом qrcode.QRCode. Он позволяет настраивать разные параметры.

import qrcode


qr = qrcode.QRCode(
    version=10,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=15,
    border=6,
)
qr.add_data('https://okumy.com/')
qr.make(fit=True)

img = qr.make_image(fill_color=(75, 0, 75), back_color=(190, 190, 255)).save('ok.png')

version — число от 1 до 40, отвечающее за размер поля QR-кода. Единица задает матрицу 21 на 21 квадрат. None позволяет автоматически подстраивать размер.

error_correction — определяет избыточность QR-кода, допустимый процент ошибок. Варьируется от 7% (ERROR_CORRECT_L) до 30% (ERROR_CORRECT_H), по умолчанию - 15%.

box_size — размер квадратов в пикселях.

border — определяет толщину границы. Не может быть меньше 4 (значение по умолчанию).

fill_color, black_color — это цвет фона и квадратов. Желательно делать их контрастными, иначе камера телефона не сможет прочесть QR-код. Помимо текста, они могут принимать RGB-кортежи.

image

Заключение

Модуль qrcode позволяет генерировать QR-коды в Python или прямо из командной строки. Базовая функция make() позволяет создать QR-код в одну строку, а использование класса QRCode позволит контролировать разнообразные параметры. Этому модулю можно найти множество самых разнообразных применений, от эффектной рекламы до граффити.

Практический Python для начинающих
Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

 7 месяцев

Возможно будет интересно

Шпаргалка по интроспекции в Python Шпаргалки
Продвинутый
Шпаргалка по интроспекции в Python

Интроспекция — это возможность запросить тип и структуру объекта во время выполнения программы.

2022-11-13