Формирование qr кода python

Создаем QR-коды с помощью Python

Нас всюду окружают QR-коды. Это удобный способ передать пользователю ссылку на сайт в рекламе, пароль от Wi-Fi или страницу загрузки меню в кафе. Их используют, чтобы получить номер в очереди, подтвердить вакцинацию, быстро проверить документы. QR-коды на достопримечательностях позволяют загрузить их изображения, трехмерные модели, информацию и даже музыку (как, например, шопеновские лавочки в Варшаве), расширяющие наш опыт туризма. Они могут заменить увесистую стопку скидочных карточек и упростить авторизацию в мессенджере.

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

Создаем QR-коды

Для начала, нам нужно установить модуль qrcode. Он использует библиотеку Pillow, так что мы загрузим все разом:

Теперь нам даже необязательно писать программу, чтобы создать QR-код. Мы можем сделать это прямо в командной строке.

qr "https://okumy.com/" > okumy.png 

В результате мы получим такое изображение:

image

В Python мы можем воспользоваться функцией qrcode.make() :

import qrcode img = qrcode.make('https://okumy.com/') type(img) # qrcode.image.pil.PilImage img.save("okumy.png") 

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

import qrcode def main(): start = int(input('Введите первый номер:')) stop = int(input('Введите последний номер:')) for i in range(start, stop + 1): value = '#' + str(i).rjust(8, '0') qrcode.make(value).save(value + '.png') if __name__ == '__main__': main() 

Теперь можно держать все инвентарные номера в базе данных, и управлять списанием прямо с телефона.

Продвинутые QR-коды

Если вы хотите большего, можно воспользоваться классом qrcode.QRCode . Он позволяет настраивать разные параметры.

import qrcode qr = qrcode.QRCode( version=10, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=15, border=6, ) qr.add_data('https://okumy.com/') qr.make(fit=True) img = qr.make_image(fill_color=(75, 0, 75), back_color=(190, 190, 255)).save('ok.png') 

version — число от 1 до 40, отвечающее за размер поля QR-кода. Единица задает матрицу 21 на 21 квадрат. None позволяет автоматически подстраивать размер.

error_correction — определяет избыточность QR-кода, допустимый процент ошибок. Варьируется от 7% ( ERROR_CORRECT_L ) до 30% ( ERROR_CORRECT_H ), по умолчанию — 15%.

box_size — размер квадратов в пикселях.

border — определяет толщину границы. Не может быть меньше 4 (значение по умолчанию).

fill_color , black_color — это цвет фона и квадратов. Желательно делать их контрастными, иначе камера телефона не сможет прочесть QR-код. Помимо текста, они могут принимать RGB-кортежи.

Читайте также:  Java compiler tools jar

image

Заключение

Модуль qrcode позволяет генерировать QR-коды в Python или прямо из командной строки. Базовая функция make() позволяет создать QR-код в одну строку, а использование класса QRCode позволит контролировать разнообразные параметры. Этому модулю можно найти множество самых разнообразных применений, от эффектной рекламы до граффити.

Практический Python для начинающих

Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

Источник

Python — cоздание и считывание QR кода

Python - cоздание и считывание QR кода

QR код является в настоящее время распространенным способом хранение информации, как на реальных объектах так и в виртуальной среде, например сканированием штрих кода можно оплатить покупку или перейти на интересующий сайт. Данную возможность можно реализовать в Python , используя Opencv, имеющий встроенную функцию для считывания информации, и библиотеки qrcode. Для начала установим соответствующие пакеты:

pip3 install opencv-python qrcode

import qrcode # импотируем модуль

string = «https://myrusakov.ru» # строка для перевода в QR

file = «myrusakov_out.jpg» # файл для хранения полученного штрих кода

image = qrcode.make(string) # метод отвечает за преобразование строки в QR

image.save(file) # сохранение полученного объекта в файл myrusakov_out.jpg

При этом в QR коде можно закодировать достаточно длинную строку, размеры которой все же ограничены. Нас же пока что интересует хранение адресной строки сайта, и последующее считывание данных. Следует отметить что для считывания кода в программной области существует множество инструментов, мы же используем Opencv, как наиболее удобный для нас, в виду возможности интеграции с веб камерой компьютера, или видеопотоком. Для корректного исполнения кода, изображение с QR кодом следует держать одной папке с нашим скриптом. Следующий скрипт выводит декодированную строку.

import cv2 # импорт модуля из библиотеки Opencv
import numpy as np # модуль обработки массивов
import sys # системный модуль
import time

# Первый блок проверяет условие, передан ли скрипту в командной строке дополнительный аргумент в виде картинки **QR кода**. Если первое условие ложно, то считывается указанная нами картинка.

if len(sys.argv)>1:
inputImage = cv2.imread(sys.argv[1])
else:
inputImage = cv2.imread(«myrusakov_out.jpg») # стандартный метод opencv для считывания изображения

# Создание функции выводящей в отдельном окне изображение QR с синим обрамлением.
def display(im, bbox):

cv2.line(im, tuple(bbox[j][0]), tuple(bbox[ (j+1) % n][0]), (255,0,0), 3)

# Display results
cv2.imshow(«Results», im)

# В Opencv имеется встроенный метод детектор QR

qrDecoder = cv2.QRCodeDetector() # создание объекта детектора

# Нахождение и декодирование нашего кода. Метод **detectAndDecode** возвращает кортеж из трех значений которыми кодируется QR, где первый аргумент data содержит декодированную строку, bbox — координаты вершин нашего изображения и rectifiedImage, содержит **QR** изображение в виде массива пикселей.

data, bbox, rectifiedImage = qrDecoder.detectAndDecode(inputImage)

print(«Decoded Data : <>«.format(data)) # вывод декодированной строки

#cv2.imshow(«Rectified QRCode», rectifiedImage);

print(«QR Code not detected»)

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

Создано 24.09.2020 13:00:00

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Читайте также:  Contains any method java

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Генерация и считывание QR-кода в Python

    Генерация и считывание QR-кода в Python

    Статьи

    Введение

    В данной статье научимся генерировать и считывать QR-код в языке программирования Python.

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

    Чтобы сгенерировать QR-код нам нужен модуль под названием qrcode. Для его установки нужно перейти в терминал/командную строку, прописать pip install qrcode, нажать Enter и ждать установки.

    После инсталляции модуля мы его импортируем:

    Теперь сохраним в переменную data ссылку, на которую будет вести QR-код. Это может быть всё что угодно, но в качестве примера я укажу ссылку на этот сайт:

    import qrcode data = "https://it-start.online"

    Далее нам нужно сгенерировать сам QR-код. Для этого используем функцию make():

    import qrcode data = "https://it-start.online" img = qrcode.make(data)

    Методом save() сохраним итоговый результат:

    import qrcode data = "https://it-start.online" img = qrcode.make(data) img.save('qr-code name.png')

    Считывание QR-кода в Python

    Для считывания QR-кода нам понадобится библиотека под названием cv2. Для её установки нужно перейти в терминал/командную строку, прописать pip install opencv-python нажать Enter и ждать установки.

    После инсталляции импортируем библиотеку cv2:

    При помощи функции imread() откроем изображение с QR-кодом:

    import cv2 img = cv2.imread('qr-code name.png')

    Создадим экземпляр класса QRCodeDetector():

    import cv2 img = cv2.imread('qr-code name.png') detector = cv2.QRCodeDetector()

    Осталось считать qr-код и вывести в консоль:

    import cv2 img = cv2.imread("qr-code name.png") detector = cv2.QRCodeDetector() data, bbox, straight_qrcode = detector.detectAndDecode(img) print(f"Данные из qr-кода: ") # Вывод: Данные из qr-кода: https://it-start.online

    Заключение

    В ходе статьи мы с Вами научились генерировать и считывать QR-коды в языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

    Источник

    Как сделать QR код с картинкой на Python

    Как поместить полноценное изображение на фон QR кода с помощью Python (быстро, без регистрации и смс).

    Суть проблемы

    Всем привет, Хабрчане! В наше нелегкое время QR коды требуют на каждом углу, от Кинотеатров до общественных Туалетов. Пандемия увеличила популярность этих удобных квадратов и дала понимание, что без них не обойтись.

    Читайте также:  File uploading with html

    К сожалению их удобство не смогло совладать с раздражающим процессом демонстрации сертификата администраторам и охранникам во всех общественных местах.

    Лица проверяющих, к которым зачастую выстраиваются очереди, выглядят мягко сказать недовольными. А если этот набор пикселей затерялся в галерее… И так пару раз за день. Вся эта процедура раздражает и бесит!

    Поиск решения

    Мне надоело показывать унылые QR коды унылым администраторам и охранникам заведений, и решил чуть приободрить это тухлое занятие.

    Идея заключалась в генерации забавных QR-кодов. Тут же побежал на просторы интернетов в поисках готовых библиотек и модулей.

    Из достойного попался на глаза модуль MyQR (Amazing-QR):

    Качество оставляет желать лучшего, согласитесь

    • Плюсы: На Python, возможность создания gif изображений
    • Минусы: Шакальное качество, эстетически несочетающиеся с изображением полосы
    • Источник — https://github.com/x-hw/amazing-qr

    К великому сожалению все они оказались чересчур примитивными, генерирующими пережатый 8/10 шакалов дЖпег со страшными полосами в QR коде, что совсем мне не подходило.

    Время костылей

    Было решено написать свой костыль модуль-надстройку для qrcode (Python).

    Определился с минимальными требованиями для него:

    • Добротное качество выходного изображения
    • Отсутствие непонятных позиционных полос
    • Возможность изменения стиля и цвета пикселей* кода

    Весь код есть на Github, ссылка будет внизу, в источниках

    И так, начнем…

    Первым делом устанавливаем все зависимости командой: pip install -r requirements.txt

    В зависимости от вашей ОС устанавливаем модуль pyzbar. Инструкция: https://pypi.org/project/pyzbar/

    Если у вас Mac OS и вылезают ошибки zbar, то перед каждым запуском ОС выполняйте команду: export DYLD_LIBRARY_PATH=/opt/homebrew/lib

    Все остальное для быстрого использования уже настроено и готово к работе, просто откройте файл example.py

    from path import Path from main import gen_qr_code text = "текст для шифровки в QR код" path_to_download = Path().joinpath("example", "example.jpg") path_to_save = Path().joinpath("example", "example.png") gen_qr_code(text, path_to_download, path_to_save)

    Модуль Path нужен для работы с путями. Функция gen_qr_code является генератором QR-кода, для нее подготавливаем:

    • text — текст, url, то что будет шифроваться в QR код
    • path_to_download — путь до фоновой картинки (вместе с именем и форматом самой картинки)
    • path_to_save — путь куда сохранять готовое изображение (в формате .png)

    1) Передаем 3 аргумента в gen_qr_code()

    2) Запуск из корневой директории команды — python example.py

    Читаются превосходно

    Логика работы банальна — Фоновое изображение автоматически подгоняется под будущие размеры QR-кода, затем модуль qrcode генерирует числовую матрицу из текста, который ему передали, после модуль Pillow рисует png картинку из матрицы, и наконец png накладывается на фоновую картинку.

    Хочу поблагодарить за внимание дорогие мои, добра вам и счастья в копилку. Сделаем этот мир чуточку веселее!

    Если кого нибудь заинтересует более подробный функционал (изменение цвета, яркости, формы пикселей qr кода — прошу написать мне, с удовольствием поделюсь)

    Источник

    Оцените статью