Друкарня від WE.UA

Всіх вітаю! У сьогоднішній статті ми розглянемо два способи, за допомогою яких можна згенерувати QR-код у Python.

Встановлення бібліотеки

Windows:

pip install qrcode

MacOS:

pip3 install qrcode

Linux:

pip install qrcode

Також нам необхідно встановити бібліотеку pillow, бо інакше наш подальший код просто не буде працювати. Справа у тому, що бібліотека qrcode використовує pillow для роботи.

Windows:

pip install pillow

MacOS:

pip3 install pillow

Linux:

pip install pillow

Генерація примітивного QR-коду

Спершу розглянемо, яким чином можна згенерувати примітивний QR-код за допомогою нещодавно встановленої бібліотеки.

Отже, імпортуємо бібліотеку:

import qrcode

Оголошуємо функцію, усередні якої будемо генерувати QR-код:

def primitive_qr_code(subject, filename):
    pass

Дана функція буде приймати два параметри — subject та filename. Перший параметр буде відповідати за посилання, яке ми хочемо перетворити у QR-код, а другий — за назву файлу, де буде збережений QR-код.

Далі ми створюємо сам QR-код за допомогою функції make():

qr_code = qrcode.make(subject)

Зберігаємо готовий QR-код у файл, за це відповідає функція save():

qr_code.save(filename)

Тепер певно було б непогано додати try/except у функцію:

def primitive_qr_code(subject, filename):
    try:
        qr_code = qrcode.make(subject)
        qr_code.save(filename)

        print(f"Your QR code was successfully created. The file named '{filename}'")

    except:
        print("An error has happened")

Ось так виглядає готова функція. Залишилося тільки перевірити працездатність нашого коду.

Оголошуємо змінні, які задовольнять параметри функції:

subject = "https://drukarnia.com.ua/nocturnal_reader"
filename = "primitive.png"

Викликаємо функцію та заповнюємо її параметри змінними:

primitive_qr_code(subject, filename)

Результат:

Отримали повідомлення з позитивним відгуком
Створений QR-код

Генерація кастомізованого QR-коду

Якщо ж ми хочемо кастомізувати QR-код, то тут спосіб генерації зовсім інший. У першому способі ми не використовували екземпляр об’єкта, але даний спосіб вимагає створення такого.

Спершу створюємо нову функцію:

def advanced_qr_code(subject, filename):
    pass

Далі створюємо екземпляр об’єкта (це і є наш QR-код) та задаємо особливі параметри генерації QR-коду, щоб він був кастомізований:

advanced_settings = qrcode.QRCode(version=3,
                                        error_correction=qrcode.ERROR_CORRECT_Q,
                                          box_size=7,
                                          border=5)

Означення всіх цих параметрів можна побачити в таблиці.

Параметр

Означення

version

Визначає розмір самого QR-коду.

Він приймає значення від 1 до 40, де 1 — це матриця розміром 21×21.

error_correction

Коригує помилки під час читання QR-коду камерою.

Даний параметр може приймати тільки такі значення:
ERROR_CORRECT_Lвиправляє лише 7% помилок;
ERROR_CORRECT_Mвиправляє 15% помилок (стандарт);

ERROR_CORRECT_Qвиправляє 25% помилок;

ERROR_CORRECT_Hвиправляє 30% помилок;

box_size

Встановлює розмір чорних клітинок у QR-коді.

border

Визначає ширину білої рамки навколо QR-коду.

Тепер додаємо дані до нашого QR-коду:

advanced_qr_code.add_data(subject)

Створюємо QR-код:

advanced_qr_code.make(fit=True)

Параметр fit у значенні True означає, що розмір QR-коду (version) буде підібраний таким чином, щоб у нього оптимально вмістилися усі дані, які ми хочемо перетворити.

Створюємо зображення QR-коду:

final_code = advanced_qr_code.make_image()

Зберігаємо у файл:

final_code.save(filename)

Далі також додаємо try/except на всяк випадок:

def advanced_qr_code(subject, filename):
    try:
        advanced_qr_code = qrcode.QRCode(version=3,
                                         error_correction=qrcode.ERROR_CORRECT_Q,
                                         box_size=7,
                                         border=5)

        advanced_qr_code.add_data(subject)
        advanced_qr_code.make(fit=True)

        final_code = advanced_qr_code.make_image()
        final_code.save(filename)

        print(f"Your QR code was successfully created. The file named '{filename}'")

    except:
        print("An error has happened")

Результат:

Кастомізований QR-код

Насправді спочатку ви можете не побачити різницю між першим QR-кодом та цим, але вона є. У цього QR-коду більший розмір самого коду, чітко встановлений розмір клітинок та дещо ширша границя білої рамки навколо самого коду.

Також при створенні кастомізованого QR-коду можна задати кольори для нього:

final_code = advanced_qr_code.make_image(fill_color="#DE3E3E", back_color="#A5CF83")

Параметр fill_color відповідає за колір самого коду (клітинок), а back_color — колір фону.

Ось який результат виходить:

Кольоровий QR-код

Висновок

Ми розібрали два способи генерації QR-кодів у Python та доволі багато дізналися про бібліотеку qrcode. У підсумку ми створили примітивні та кастомізовані QR-коди, детально розібравши параметри генерації останнього.

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@nocturnal_reader

Нічний читач

62Довгочити
1.3KПерегляди
21Підписники
Підтримати
На Друкарні з 14 липня 2025

Більше від автора

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: