Entrada

Módulo QRCode

Generación de Códigos QR en Python
Con la Biblioteca qrcode

Los códigos QR (Quick Response) se han convertido en una herramienta invaluable para almacenar y compartir información de manera rápida y eficiente. Desde enlaces a sitios web hasta detalles de contacto y más, los códigos QR ofrecen una forma rápida de acceder a la información con solo escanear un código. En este artículo, exploraremos cómo generar códigos QR en Python utilizando la biblioteca qrcode, una herramienta sencilla y efectiva para incorporar códigos QR en tus proyectos.

¿Qué es la Biblioteca qrcode?

La biblioteca qrcode en Python es una herramienta que permite crear códigos QR de manera fácil y rápida. Proporciona una interfaz simple para generar códigos QR en varios formatos, y es altamente personalizable, permitiéndote ajustar los parámetros para satisfacer tus necesidades específicas.

Instalación

Para comenzar a utilizar qrcode, primero debes instalar la biblioteca. Puedes hacerlo fácilmente usando pip, el gestor de paquetes de Python:

1
pip install qrcode[pil]

Aquí, el sufijo [pil] asegura que se instale también la biblioteca Pillow, que es necesaria para manipular imágenes.

Generación Básica de un Código QR

A continuación, veremos cómo generar un código QR básico en Python.

1. Crear un Código QR Simple

El siguiente ejemplo muestra cómo generar un código QR que contenga un enlace a un sitio web:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import qrcode

# Datos que deseas codificar en el QR
data = "https://www.example.com"

# Crear un objeto QRCode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# Añadir los datos al código QR
qr.add_data(data)
qr.make(fit=True)

# Crear una imagen del código QR
img = qr.make_image(fill='black', back_color='white')

# Guardar la imagen en un archivo
img.save("example_qr.png")

En este código:

  • version: Determina el tamaño del código QR. Los valores van de 1 a 40, donde 1 es el tamaño más pequeño.
  • error_correction: Controla el nivel de corrección de errores. ERROR_CORRECT_L es el nivel más bajo y ERROR_CORRECT_H es el más alto.
  • box_size: Define el tamaño de cada caja del código QR en píxeles.
  • border: Establece el grosor del borde en cajas (no píxeles).

2. Personalizar el Diseño del Código QR

Puedes personalizar el color de primer plano y fondo del código QR para adaptarlo a tu diseño:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import qrcode

# Datos que deseas codificar en el QR
data = "https://www.example.com"

# Crear un objeto QRCode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# Añadir los datos al código QR
qr.add_data(data)
qr.make(fit=True)

# Crear una imagen del código QR con colores personalizados
img = qr.make_image(fill='blue', back_color='yellow')

# Guardar la imagen en un archivo
img.save("custom_qr.png")

En este código, fill y back_color permiten establecer los colores del primer plano y del fondo, respectivamente.

Incorporar un Logotipo en el Código QR

Si deseas agregar un logotipo al centro del código QR, puedes hacerlo superponiendo una imagen sobre el código QR generado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import qrcode
from PIL import Image

# Datos que deseas codificar en el QR
data = "https://www.example.com"

# Crear un objeto QRCode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# Añadir los datos al código QR
qr.add_data(data)
qr.make(fit=True)

# Crear una imagen del código QR
img_qr = qr.make_image(fill='black', back_color='white')

# Abrir el logotipo
logo = Image.open("logo.png")

# Calcular el tamaño del logotipo y redimensionarlo
logo_size = 50
logo = logo.resize((logo_size, logo_size))

# Calcular la posición para centrar el logotipo
qr_width, qr_height = img_qr.size
logo_x = (qr_width - logo_size) // 2
logo_y = (qr_height - logo_size) // 2

# Colocar el logotipo en el código QR
img_qr.paste(logo, (logo_x, logo_y), logo)

# Guardar la imagen final
img_qr.save("qr_with_logo.png")

En este ejemplo:

  • logo.resize(): Redimensiona el logotipo para que se ajuste al tamaño del código QR.
  • img_qr.paste(): Superpone el logotipo en el centro del código QR.

Leer un Código QR con pyzbar

Para completar el ciclo, aquí tienes cómo leer un código QR usando la biblioteca pyzbar, que es útil si necesitas decodificar los datos de un código QR en tus aplicaciones.

1. Instalación

Para comenzar a usar pyzbar, primero necesitas instalarlo. Además de pyzbar, necesitarás Pillow (en caso de que no la tengas instalada), la biblioteca para el manejo de imágenes. Puedes instalar ambos paquetes usando pip:

1
pip install pyzbar pillow

2. Leer un Código QR

1
2
3
4
5
6
7
8
9
10
11
12
from PIL import Image
from pyzbar.pyzbar import decode

# Abrir el código QR
img = Image.open("example_qr.png")

# Decodificar el código QR
decoded_objects = decode(img)

# Imprimir el contenido del código QR
for obj in decoded_objects:
    print(f"Data: {obj.data.decode('utf-8')}")

Conclusión

La biblioteca qrcode en Python facilita la generación de códigos QR para diversos propósitos, desde enlaces a sitios web hasta información de contacto y más. Con características que permiten la personalización del diseño y la integración de logotipos, qrcode ofrece una solución completa para tus necesidades de códigos QR.

Con los ejemplos y técnicas presentadas en este artículo, estás listo para incorporar códigos QR en tus proyectos y aplicaciones. ¡Explora las capacidades de qrcode, experimenta con diferentes estilos y personalizaciones, y disfruta de la flexibilidad que ofrece para la generación de códigos QR!


Espero que este artículo te haya proporcionado una comprensión clara sobre cómo utilizar la biblioteca qrcode en Python. ¡No dudes en experimentar y aprovechar al máximo esta herramienta en tus proyectos!

Mi lema es

Esta entrada está licenciada bajo CC BY 4.0 por el autor.