Одну из популярных форм кодирования информации представляет 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)
В итоге будет создан следующее изображение:
Из интересных возможностей, представляемых библиотекой, можно отметить наличие встроенных функций-хелперов для кодирования определенной информации. Некоторые из них:
Кодирование 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)