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

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

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

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

галерея

ИИ-микрофон Echomic превращает речь в текст
Методология облучения 1-гексаноловых растворов: этапы исследования и анализ.
Agentic RAG против Classic RAG: от конвейера к контуру управления
Uber, Wayve и Nissan планируют запустить сервис роботакси в Токио в этом году.
ideipro logotyp
Врачи играют все более важную роль в оценке инструментов искусственного интеллекта для здравоохранения | MobiHealthNews
Топ-7 фреймворков для оркестрации агентов ИИ
Схема взаимосвязей различных эмодзи, сгруппированных по категориям с животными, символами и лицами.
Компания SpaceX может избежать экологических проверок, развернув миллион спутников.
Image Not Found
ИИ-микрофон Echomic превращает речь в текст

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

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

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

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

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

Мар 13, 2026
Agentic RAG против Classic RAG: от конвейера к контуру управления

Agentic RAG против Classic RAG: от конвейера к контуру управления

Практическое руководство по выбору между однопроходными конвейерами и адаптивными циклами извлечения данных в зависимости от сложности, стоимости и требований к надежности вашего варианта использования. Делиться Введение: Почему это сравнение важно RAG начинала с простой цели: обосновывать результаты…

Мар 13, 2026
Uber, Wayve и Nissan планируют запустить сервис роботакси в Токио в этом году.

Uber, Wayve и Nissan планируют запустить сервис роботакси в Токио в этом году.

Вкратце Источник изображений: Nissan Компания Wayve, занимающаяся разработкой программного обеспечения для беспилотных автомобилей и недавно привлекшая 1,2 миллиарда долларов инвестиций, объединяется с Uber и Nissan для запуска сервиса роботакси в Токио. Пилотный проект запланирован на конец 2026…

Мар 13, 2026

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