Создаем QR-коды с помощью Python
Нас всюду окружают QR-коды. Это удобный способ передать пользователю ссылку на сайт в рекламе, пароль от Wi-Fi или страницу загрузки меню в кафе. Их используют, чтобы получить номер в очереди, подтвердить вакцинацию, быстро проверить документы. QR-коды на достопримечательностях позволяют загрузить их изображения, трехмерные модели, информацию и даже музыку (как, например, шопеновские лавочки в Варшаве), расширяющие наш опыт туризма. Они могут заменить увесистую стопку скидочных карточек и упростить авторизацию в мессенджере.
В профессиональной деятельности QR-коды массово используются для инвентаризации, маркировки продуктов и образцов. Такие задачи остро нуждаются в автоматизации. К счастью, в Python есть модуль qrcode, позволяющий превратить текст в симпатичные квадратики.
Создаем QR-коды
Для начала, нам нужно установить модуль qrcode. Он использует библиотеку Pillow, так что мы загрузим все разом:
pip install qrcode[pil]
Теперь нам даже необязательно писать программу, чтобы создать QR-код. Мы можем сделать это прямо в командной строке.
qr "https://okumy.com/" > okumy.png
В результате мы получим такое изображение:
В 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-кортежи.
Заключение
Модуль qrcode позволяет генерировать QR-коды в Python или прямо из командной строки. Базовая функция make()
позволяет создать QR-код в одну строку, а использование класса QRCode
позволит контролировать разнообразные параметры. Этому модулю можно найти множество самых разнообразных применений, от эффектной рекламы до граффити.
Возможно будет интересно
Шпаргалка по интроспекции в Python
Интроспекция — это возможность запросить тип и структуру объекта во время выполнения программы.