Как создать изображение QR-кода или SVG в Python

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

1. Установите необходимые библиотеки

Первая библиотека, которую вам нужно добавить в Python — это Pillow. Библиотека изображений Python, также широко известная как PIL или Pillow в более новых версиях (в новых версиях, называемых Pillow), является бесплатной библиотекой для языка программирования Python, в которую добавлена ​​поддержка открытия, управления и сохранения множества различных форматов файлов изображений. Он доступен для Windows, Mac OS X и Linux. Для создания QR-кода мы будем использовать библиотеку qrcode, которая опирается на подушку

Вы можете установить этот модуль, выполнив следующую команду в своем терминале:

REM Required to work with images
pip install Pillow

После завершения установки Pillow вы можете приступить к установке библиотеки генератора QR:

REM install library to generate QR Codes
pip install qrcode

В противном случае, без подушки вы получите сообщение об ошибке ‘ImportError: нет модуля с именем Image‘во время создания изображения с библиотекой QR Code. Для получения дополнительной информации о подушка или же QR код, пожалуйста, посетите их домашние страницы.

2. Создание QR-кода в качестве изображения

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

# Import QR Code library
import qrcode
# Create qr code instance
qr = qrcode.QRCode(
version = 1,
error_correction = qrcode.constants.ERROR_CORRECT_H,
box_size = 10,
border = 4,
)
# The data that you want to store
data = "The Data that you need to store in the QR Code"
# Add data
qr.add_data(data)
qr.make(fit=True)
# Create an image from the QR Code instance
img = qr.make_image()
# Save it somewhere, change the extension as needed:
# img.save("image.png")
# img.save("image.bmp")
# img.save("image.jpeg")
img.save("image.jpg")

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

QR-код имеет возможность исправления ошибок для восстановления данных, если код поврежден или загрязнен. Четыре уровня исправления ошибок доступны с этой библиотекой, они хранятся в qrcode.constants объект:

  • ERROR_CORRECT_L: Около 7% или менее ошибок могут быть исправлены.
  • ERROR_CORRECT_M: (по умолчанию) Около 15% или менее ошибок могут быть исправлены.
  • ERROR_CORRECT_Q: Около 25% или менее ошибок могут быть исправлены.
  • ERROR_CORRECT_H: Около 30% или менее ошибок могут быть исправлены.
Читайте также:  Как отключить защиту / проверку CSRF для формы в Symfony 1.4

Они должны быть представлены как стоимость error_correction собственность при создании QR-кода.

Размер QR-кода

Вы можете изменить размер сгенерированного QR-кода с помощью box_size имущество.

3. Создание QRCode как SVG

Если вы хотите сгенерировать SVG-файл QRCode вместо изображения, то вам нужно будет установить библиотека lxml а потому что чем старше xml.etree.ElementTree Версия не может быть использована для создания изображений SVG. lxml — это инструментарий XML — это Pythonic-связывание для библиотек C libxml2 и libxslt. Он уникален тем, что сочетает в себе скорость и полноту возможностей XML этих библиотек с простотой нативного API-интерфейса Python, в основном совместимого, но превосходящего хорошо известный API ElementTree.

Чтобы установить этот модуль с помощью pip, выполните в терминале следующую команду:

pip install lxml

После установки вы сможете сгенерировать ElementTree для файла SVG, который будет сгенерирован. Метод генерации SVG может отличаться в зависимости от ваших потребностей, библиотека предлагает SVG 3 типа, а именно SVG-изображение, с использованием фрагментов или путей:

import qrcode
import qrcode.image.svg
# define a method to choose which factory metho to use
# possible values 'basic' 'fragment' 'path'
method = "basic"
data = "Some text that you want to store in the qrcode"
if method == 'basic':
# Simple factory, just a set of rects.
factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
# Fragment factory (also just a set of rects)
factory = qrcode.image.svg.SvgFragmentImage
elif method == 'path':
# Combined path factory, fixes white space that may occur when zooming
factory = qrcode.image.svg.SvgPathImage
# Set data to qrcode
img = qrcode.make(data, image_factory = factory)
# Save svg file somewhere
img.save("qrcode.svg")
Ссылка на основную публикацию
Adblock
detector