Кодирование данных

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

Последнее обновление: 23.02.2023

Одну из популярных форм кодирования информации представляет QR-код (quick responce) — штрих-код в виде серии пикселей в квадратной сетке. Для генерации QR-кода в Python можно использовать различные библиотеки. Большинство из них двольно похожи по функционалу. Одной из распространенных библиотек для генерации QR-кодов в Python является Segno. Установим данную библиотеку с помощью пакетного менеджера pip:

pip install segno

Для создания qr-кода применяются функции segno.make() и segno.make_qr(). Эти функции в качестве обязательного параметра принимают кодируемое содержимое и возвращают созданный qr-код:

import segno

qrcode = segno.make_qr("Hello METANIT.COM")
qrcode2 = segno.make("Hello METANIT.COM", micro=False)

По умолчанию segno.make() создает микро-код. Чтобы создать обычный qr-код, указывается параметр micro=False

Далее созданный qr-код можно сохранить с помощью метода save() в один из следующих форматов: .svg, .png, .eps, и .pdf

import segno

# создаем код
qrcode = segno.make_qr("Hello METANIT.COM")
 # сохраняем его в файл "metanit_qr.png"
qrcode.save("metanit_qr.png") 

# аналогично можно сохранить в другие форматы
qrcode.save("metanit_qr.pdf")
qrcode.save("metanit_qr.eps")
qrcode.save("metanit_qr.svg")

Чтобы сразу же отобразить созданный код в программе просмотра по умолчанию, можно применить метод show():

import segno

qrcode = segno.make_qr("Hello METANIT.COM")
qrcode.save("metanit_qr.png")
qrcode.show()

При сохранении в файл в метод save() можно передать ряд параметров. Некоторые из них:

  • scale: коэффициент увеличения изображения

  • border: размер границы

  • dark: цвет темной части QR кода в виде кортежа (R, G, B) или строки с именем цвета (например, "red") или с шестнадцатеричным значением цвета, например, (#RGB и #RRGGBB)

  • light: цвет светлой части QR кода

Например:

import segno

qrcode = segno.make_qr("Hello METANIT.COM")
# цвет - #2980B9, граница - 4, масштабирование - в 5 раз
qrcode.save("metanit_qr.png", dark="#2980B9", border=4, scale=5)

В итоге будет создан следующее изображение:

Создание qr-кода в Python

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

  • Кодирование email

    segno.helpers.make_email(to, cc=None, bcc=None, subject=None, body=None)
    
    # Параметры:
    # to -  кому письмо
    # cc -  список получателей копии письма
    # bcc -  список получателей слепой копии письма
    # subject -  тема письма
    # body -  текст письма
    
  • Кодирование геокоординат

    segno.helpers.make_geo(lat, lng)
    
    # Параметры:
    # lat -  широта
    # lng -  долгота
    
  • Кодирование настроек wifi

    segno.helpers.make_wifi(ssid, password=None, security=None, hidden=False)
    
    # Параметры:
    # ssid -  SSID сети
    # password -  пароль
    # security -  тип аутентификации ("WEP" или "WPA").
    # hidden -  является ли сеть скрытой
    
  • Кодирование MeCard

    segno.helpers.make_mecard(name, reading=None, email=None, phone=None, videophone=None, memo=None, nickname=None, birthday=None, url=None, pobox=None, roomno=None, houseno=None, city=None, prefecture=None, zipcode=None, country=None)
    
  • Кодирование vCard версии 3.0

    segno.helpers.make_vcard(name, displayname, email=None, phone=None, fax=None, videophone=None, memo=None, nickname=None, birthday=None, url=None, pobox=None, street=None, city=None, region=None, zipcode=None, country=None, org=None, lat=None, lng=None, source=None, rev=None, title=None, photo_uri=None, cellphone=None, homephone=None, workphone=None)
    

Например, кодирование email:

from segno import helpers

qrcode = helpers.make_email("tom@gmail.com", cc=None, bcc=None, subject="Тема письма", body="Содержимое письма")
qrcode.save("email_qr.png", scale=5)

Или кодирование настроек wifi:

from segno import helpers

qrcode = helpers.make_wifi(ssid="MyWifi", password="1234567890", security="WPA")
qrcode.save("wifi-access.png", scale=10)
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850