Всіх вітаю! У сьогоднішній статті ми розглянемо два способи, за допомогою яких можна згенерувати QR-код у Python.
Встановлення бібліотеки
Windows:
pip install qrcodeMacOS:
pip3 install qrcodeLinux:
pip install qrcodeТакож нам необхідно встановити бібліотеку pillow, бо інакше наш подальший код просто не буде працювати. Справа у тому, що бібліотека qrcode використовує pillow для роботи.
Windows:
pip install pillowMacOS:
pip3 install pillowLinux:
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-код, то тут спосіб генерації зовсім інший. У першому способі ми не використовували екземпляр об’єкта, але даний спосіб вимагає створення такого.
Спершу створюємо нову функцію:
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)
Означення всіх цих параметрів можна побачити в таблиці.
Параметр | Означення |
|---|---|
| Визначає розмір самого QR-коду. Він приймає значення від 1 до 40, де 1 — це матриця розміром 21×21. |
| Коригує помилки під час читання QR-коду камерою. Даний параметр може приймати тільки такі значення:
|
| Встановлює розмір чорних клітинок у QR-коді. |
| Визначає ширину білої рамки навколо 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-коду можна задати кольори для нього:
final_code = advanced_qr_code.make_image(fill_color="#DE3E3E", back_color="#A5CF83")Параметр fill_color відповідає за колір самого коду (клітинок), а back_color — колір фону.
Ось який результат виходить:

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