b1aa6c01373845a4db8a941a90068b5a.jpg

Как генерировать QR-коды на Python

Учебное пособие для начинающих по изучению пакета Python «qrcode»

Делиться

b1aa6c01373845a4db8a941a90068b5a

Введение в QR-коды

«QR» в QR-коде означает «быстрый ответ». QR-коды — это новый и простой способ получить информацию без ввода текста или поиска на телефоне. Эти коды, по сути, представляют собой набор чёрно-белых квадратов со встроенными в них цифровыми кодами, которые можно отсканировать. Сегодня рестораны используют QR-коды для демонстрации меню клиентам, магазины и торговые центры — для бесконтактной оплаты, организаторы мероприятий — для быстрой регистрации на свои мероприятия и конференции и так далее.

Генерация QR-кодов

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

Ниже приведен пример QR-кода, сгенерированного с помощью пакета Python «qrcode»:

d5d3a96bcaf70bcc6dc7bd5abb4f8372

Отсканировав указанный выше код с помощью сканера с функцией сканирования QR-кодов, вы попадете на мой профиль TDS, где вы сможете легко получить доступ к проектам Python, понятным для начинающих.

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

Установка пакета

Перед началом проекта установим необходимые пакеты. Для этой задачи я использую PyCharm IDE. Чтобы установить пакет Python «qrcode», я перейду в терминал Python и введу следующую команду:

pip install qrcode

ef35f1fc6fc8d9fd316b945faa61a8b8

Установка пакета QRCode позволит нам создавать QR-коды в формате PNG и отображать их в консоли Python. Однако, если нам требуется больше функций, связанных с изображениями, следует установить пакет Pillow для обработки изображений.

pip install «qrcode[pil]»

97b5f496750e2f79bf1a7c1878ae93cf

Импорт библиотеки и создание простого QR-кода

Теперь приступим к кодированию. Сначала импортируем библиотеку и добавим псевдоним для удобства. Как видно из документации по QR Code Python, изображение QR-кода для URL можно легко сгенерировать и сохранить в формате PNG с помощью следующих строк кода:

import qrcode as qr img = qr.make(«https://pypi.org/project/qrcode/») img.save(«Python QR Code Documentation.png»)

7575aa8a34b622e517cfb47451c2711d

Это простой QR-код, созданный с помощью функции make() и сохраненный как PNG-файл с помощью функции save().

Расширенные функциональные возможности

Для расширенных функций обработки изображений мы будем использовать класс QRCode в пакете Python qrcode.

Классы и объекты — полезная концепция в программировании. Классы Python предоставляют шаблон для создания объектов со схожими характеристиками, атрибутами (переменными) и методами (функциями). Мы будем использовать конструктор классов Python для создания QR-кодов как объектов этого класса.

Ниже представлен общий код, позволяющий нам создавать и сохранять QR-коды:

импорт qrcode qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) qr.add_data('https://towardsdatascience.com/implementing-the-coffee-machine-project-in-python-using-object-oriented-programming/') qr.make(fit=True) img = qr.make_image(fill_color=»black», back_color=»white») img.save(«Understanding Classes and Objects.png»)

1126d2a95a671be921ea59e62d6b6786

Приведённый выше код создал и сохранил QR-код в формате PNG. Отсканировав его, вы попадёте на интересное руководство по Python, в котором рассматривается, как концепция классов и объектов Python реализуется в реальных проектах.

Теперь давайте подробно разберем приведенный выше общий код, изучим функции и поэкспериментируем с их вариациями.

Создание объекта

Первая строка кода после импорта библиотеки qrcode создает объект с его атрибутами и методами, заключенными в круглые скобки.

qr = qrcode.QRCode( … … … … … )

Здесь qrcode относится к пакету Python, а QRCode() относится к классу.

Определение версии

Далее нужно определить версию. Мы можем задать целое число от 1 до 40, что позволит получить QR-код разных размеров.

импорт qrcode qr = qrcode.QRCode( версия=1, … … … … )

Давайте создадим QR-код с переменной версии, равной 5.

91e67dad819d2e91b06a14133f92b75e

Теперь установим параметр версии равным 15:

e1e538814ceab721bee9c99794db5c72

Как видно из двух QR-кодов выше, атрибут версии определяет размер QR-кода. Наименьшая версия 1 создаёт QR-код в виде сетки 21×21.

Исправление ошибок

Следующий атрибут, который мы рассмотрим, — это error_correction. Атрибут Error Correction отвечает за избыточность данных, чтобы даже если QR-код повреждён, его всё равно можно было отсканировать. Существует 4 различных уровня error_correction:

  • Исправление ошибок L: обеспечивает самый низкий уровень исправления ошибок, а именно 7%.
  • Исправление ошибок M: обеспечивает умеренный уровень исправления данных, 15% или меньше, тем самым обеспечивая баланс между исправлением ошибок и размером данных.
  • Исправление ошибок В: Это обеспечивает исправление ошибок на 25% или менее.
  • Исправление ошибок H: обеспечивает высокий уровень исправления ошибок и подходит для приложений, в которых возможны серьезные повреждения, а размер данных не имеет значения.

qr = qrcode.QRCode( версия=1, исправление_ошибки=qrcode.константы.ERROR_CORRECT_L, … … )

Чем больше процентное значение error_correction, тем легче сканировать QR-код, даже если он частично повреждён. С другой стороны, QR-коды становятся больше по размеру, и это создаёт проблему, когда сжатие данных является основным требованием.

Давайте создадим QR-коды с различными типами исправления ошибок.

563055c10529ab9d770593bd5b8efd12
c751a32b0f2cd426f7e0c6dd1d08e432
d15b06f1ac4eb4dbaadf73e4358da771
74506c19f7f4d9e7e564f8b7166d97bd

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

Размер коробки

Следующий атрибут, который мы рассмотрим и с которым поэкспериментируем, — это box_size. В библиотеке Python qrcode box_size определяет количество пикселей в QR-коде.

qr = qrcode.QRCode( версия=1, исправление_ошибки=qrcode.константы.ERROR_CORRECT_L, размер_коробки=10, … )

Давайте посмотрим, как меняется наш QR-код при разных значениях box_size:

0549b31f7e83301bb474be46cce8180b
3684bb9105c38b696f39267f195503da
bbfb459fc8701977385ce4f379d3bcfe

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

Граница

Последний атрибут, который нам нужно определить для создания объекта, — это граница (border). Она определяет рамку вокруг кода. Минимальное значение — 4, и мы можем увеличивать его до любого значения. Давайте посмотрим, как изменится код при изменении этого атрибута:

663ec71f14caeb5f1788c52ca30cca88
0634f2ac51b04e7973621dff034cc5de

Мы можем увидеть разницу в границах изображений выше, которые можно легко настроить с помощью переменной border.

Добавление данных

После создания объекта с заданными значениями версии, типа исправления ошибок, размера поля и границы, мы добавим данные, которые необходимо закодировать в QR-код. Эти данные могут быть строкой, URL-адресом, местоположением, контактной информацией и т. д. Это можно легко сделать с помощью метода add_data() этого класса.

импорт qrcode qr = qrcode.QRCode( версия=1, ошибка_коррекция=qrcode.константы.ERROR_CORRECT_L, размер_поля=1, граница=10, ) qr.add_data('https://towardsdatascience.com/building-a-facial-recognition-model-using-pca-svm-algorithms-c81d870add16/') qr.make(fit=True)

Последняя строка кода выше вызывает qr.make(fit=True). Это автоматически подгоняет QR-код под предоставленные данные после их анализа. При этом используется наименьший возможный размер QR-кода для размещения данных, и нам не требуется вручную задавать атрибуты размера.

Генерация объекта изображения

После создания объекта QR-кода мы используем PIL для генерации изображения, определения его цветов и сохранения в подходящем формате. В следующем примере мы установим чёрный фон и розовый цвет заливки для нашего QR-кода, как показано в коде ниже:

импорт qrcode qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=1, border=10, ) qr.add_data('https://towardsdatascience.com/using-python-to-build-a-calculator/') qr.make(fit=True) img = qr.make_image(fill_color=»pink», back_color=»black») img.save(«calc.png»)

233f035aeb75d9a58a077b84dfcd6b55

Заключение

В этой статье мы рассмотрели пакет Python QR Code, включающий в себя схему создания QR-кодов и их сохранения в различных форматах файлов. Он также включает расширенные возможности настройки генерации QR-кодов, которые мы изучили, изучив классы и объекты. Это был простой и понятный для начинающих учебник по Python, требующий лишь поверхностного знания классов и объектов.

Источник: towardsdatascience.com

✅ Найденные теги: Как, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Астероид пролетает рядом с планетой среди космических просторов.
Новое светоактивируемое покрытие способно убивать стойкие микробы
Добро пожаловать на темную сторону мечты о криптовалютах, где не требуется никаких разрешений.
Анонс программы «Чудо техники» на 15 марта 2026
ИИ-микрофон Echomic превращает речь в текст
Методология облучения 1-гексаноловых растворов: этапы исследования и анализ.
Agentic RAG против Classic RAG: от конвейера к контуру управления
Uber, Wayve и Nissan планируют запустить сервис роботакси в Токио в этом году.
ideipro logotyp
Image Not Found
Добро пожаловать на темную сторону мечты о криптовалютах, где не требуется никаких разрешений.

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

Жан-Поль Торбьорнсен — лидер THORChain, блокчейна, который, как предполагалось, не должен иметь лидеров, и который сейчас переживает череду дорогостоящих скандалов. 18 февраля 2026 г. Каган Маклеод «Сейчас мы вне воздушного пространства. Мы можем делать все, что захотим»,…

Мар 13, 2026
Анонс программы «Чудо техники» на 15 марта 2026

Анонс программы «Чудо техники» на 15 марта 2026

В новом выпуске программы «Чудо техники» с Сергеем Малозёмовым»: Гены подскажут: кому грозит болезнь Альцгеймера и как её распознать на ранних стадиях? Правда ли питаться готовой едой выгоднее, чем домашней? Как работает кухня доставки?  В рубрике «Чудо-товары»…

Мар 13, 2026
ИИ-микрофон Echomic превращает речь в текст

ИИ-микрофон Echomic превращает речь в текст

Смарт-микрофон Echomic с искусственным интеллектом — это удобный инструмент для записи голоса, преобразования его в текст и управления мультимедийными задачами.  Новинка спроектирована как компактный микрофон, которая крепится на одежду, чтобы захватывать голос чисто и без лишнего шума.…

Мар 13, 2026
Методология облучения 1-гексаноловых растворов: этапы исследования и анализ.

Разработан подход к выявлению облученных пищевых продуктов

Этапы исследования © Molecules Учёные НИИ ядерной физики, физического и химического факультетов МГУ изучили влияние ионизирующего излучения на образование летучих органических соединений, содержащихся в продуктах питания. Исследование имеет важное значение для разработки уникальных биохимических маркеров радиационной обработки…

Мар 13, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых