Cómo crear una imagen de código QR o SVG en Python

Un código de respuesta rápida (QR) es un código pictográfico bidimensional que se utiliza debido a su rápida legibilidad y su capacidad de almacenamiento relativamente grande. El código consta de módulos negros dispuestos en un patrón cuadrado sobre un fondo blanco. Si está trabajando con Python y necesita crear rápidamente un código QR, le mostraremos cómo puede lograrlo en un par de segundos utilizando la biblioteca qrcode.

1. Instale las bibliotecas necesarias

La primera biblioteca que debe agregar en Python es Pillow. La biblioteca de imágenes de Python, también conocida como PIL o Pillow en las versiones más recientes, (en las versiones más recientes conocida como Pillow) es una biblioteca gratuita para el lenguaje de programación Python que agrega soporte para abrir, manipular y guardar muchos formatos de archivo de imagen diferentes. Está disponible para Windows, Mac OS X y Linux. Para crear el código QR vamos a utilizar la biblioteca qrcode que se basa en pillow

Puedes instalar este módulo ejecutando el siguiente comando en tu terminal:

REM Requerido para trabajar con imágenes
pip install Pillow

Una vez que finalice la instalación de Pillow, puede continuar con la instalación de la biblioteca del generador QR:

REM instalar biblioteca para generar códigos QR
pip install qrcode

De lo contrario, sin Pillow, aparece el mensaje de error ' ImportError: No hay módulo llamado Imagen ' durante la creación de una imagen con la biblioteca de códigos QR. Para obtener más información sobre Pillow o qrcode , visite sus páginas de inicio.

2. Creación de código QR como imagen

El código que necesita escribir para crear un código QR es muy sencillo de entender y bastante sencillo. Primero importe la biblioteca qrcode y use el método QRCode de ella, luego proporcione los argumentos según sea necesario

# Importar biblioteca de códigos QR
import qrcode

# Crear instancia de código qr
qr = qrcode.QRCode(
    version = 1,
    error_correction = qrcode.constants.ERROR_CORRECT_H,
    box_size = 10,
    border = 4,
)

# Los datos que desea almacenar
data = "Los datos que necesita almacenar en el código QR"

# Agregar datos
qr.add_data(data)
qr.make(fit=True)

# Crea una imagen a partir de la instancia de QR Code
img = qr.make_image()

# Guárdelo en algún lugar, cambie la extensión según sea necesario:
# img.save("image.png")
# img.save("image.bmp")
# img.save("image.jpeg")
img.save("image.jpg")

Error de corrección

Un código QR tiene capacidad de corrección de errores para restaurar datos si el código está dañado o sucio. Hay cuatro niveles de corrección de errores disponibles con esta biblioteca, que se almacenan en el  qrcode.constantsobjeto:

  • ERROR_CORRECT_L: Se pueden corregir aproximadamente un 7% o menos de errores.
  • ERROR_CORRECT_M: (predeterminado) Se pueden corregir aproximadamente un 15% o menos de errores.
  • ERROR_CORRECT_Q: Se pueden corregir aproximadamente un 25% o menos de errores.
  • ERROR_CORRECT_H: Se pueden corregir aproximadamente un 30% o menos de errores.

Deben proporcionarse como valor de la  error_correctionpropiedad durante la creación del Código QR.

Tamaño del código QR

Puede cambiar el tamaño del código QR generado con la box_sizepropiedad.

3. Creación de QRCode como SVG

Si está dispuesto a generar un archivo SVG del QRCode en lugar de una imagen, deberá instalar también la biblioteca lxml , porque la xml.etree.ElementTree versión anterior no se puede utilizar para crear imágenes SVG. lxml es un kit de herramientas XML es un enlace Pythonic para las bibliotecas de C libxml2 y libxslt. Es único en el sentido de que combina la velocidad y la integridad de las funciones XML de estas bibliotecas con la simplicidad de una API nativa de Python, en su mayoría compatible pero superior a la conocida API ElementTree.

Para instalar este módulo usando pip, ejecute el siguiente comando en la terminal:

pip install lxml

Después de la instalación, podrá generar un ElementTree para el archivo SVG que se generará. El método de generación del SVG puede ser diferente según sus necesidades, la biblioteca ofrece 3 tipos de SVG, a saber, una imagen SVG, utilizando fragmentos o rutas:

import qrcode
import qrcode.image.svg

# definir un método para elegir qué método de fábrica utilizar
# possible values 'basic' 'fragment' 'path'
method = "basic"

data = "Algún texto que desea almacenar en el código qr"

if method == 'basic':
    # Fábrica simple, solo un conjunto de rectas.
    factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
    # Fábrica de fragmentos (también solo un conjunto de rectos)
    factory = qrcode.image.svg.SvgFragmentImage
elif method == 'path':
    # Fábrica de ruta combinada, corrige los espacios en blanco que pueden ocurrir al hacer zoom
    factory = qrcode.image.svg.SvgPathImage

# Establecer datos en qrcode
img = qrcode.make(data, image_factory = factory)

# Guarde el archivo svg en algún lugar
img.save("qrcode.svg")

Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable