Друкарня від 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

Нічний читач

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

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

  • Метод isspace() у Python

    Всіх вітаю! У даній статті ми розглянемо метод isspace() та приклади його використання у коді.

    Теми цього довгочиту:

    Програмування
  • Метод join() у Python

    Всіх вітаю! Сьогодні ми розглянемо метод join() та принцип його використання у коді.

    Теми цього довгочиту:

    Програмування
  • Метод capitalize() у Python

    Всіх вітаю! У цій статті ми поговоримо про метод capitalize() у Python та те, яким чином він працює.

    Теми цього довгочиту:

    Програмування

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

  • HR PRO Business: новий формат HR-спільноти для топів та HR-лідерів у Дніпрі

    У Дніпрі відбулася перша зустріч нової спільноти HR PRO Business, яка об'єднала понад 35 учасників, заклавши основу для розвитку нової професійної мережі.

    Теми цього довгочиту:

    It
  • Про візуальні технології в розробці ігор

    Звісно, певні команди працюють швидше за інші, але є ще дещо, про що не завжди говорять замовники персонажів для онлайн-ігор жанрів RPG/Adventure/Casual (цей список не є вичерпним).

    Теми цього довгочиту:

    Дизайн
  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

    Теми цього довгочиту:

    Js

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

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

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

  • HR PRO Business: новий формат HR-спільноти для топів та HR-лідерів у Дніпрі

    У Дніпрі відбулася перша зустріч нової спільноти HR PRO Business, яка об'єднала понад 35 учасників, заклавши основу для розвитку нової професійної мережі.

    Теми цього довгочиту:

    It
  • Про візуальні технології в розробці ігор

    Звісно, певні команди працюють швидше за інші, але є ще дещо, про що не завжди говорять замовники персонажів для онлайн-ігор жанрів RPG/Adventure/Casual (цей список не є вичерпним).

    Теми цього довгочиту:

    Дизайн
  • λanguage: Неформальний опис мови

    Автор пояснює, як написати парсер, інтерпретатор, компілятор, та інші складові власної мови програмування. Описується синтаксис мови, особливості реалізації функцій, умовних конструкцій та інших елементів мови.

    Теми цього довгочиту:

    Js