Generar código QR

Actualizado el 24/04/2022.

Un código QR es un método para almacenar información en una imagen contenedora de una matriz de puntos. Las siglas QR derivan de Quick Response, respuesta rápida. En la actualidad se ha dado a conocer a nivel mundial, principalmente, durante el auge de los teléfonos inteligentes. Por lo tanto, si cuentas con uno, de seguro que incorpora un lector de código QR.
Vista previa
El módulo qrcode permite generar imágenes de código QR desde Python a partir de una cadena de texto. Para esto, lo único que requiere es una previa instalación de PIL, un paquete para el manejo de imágenes, o preferiblemente Pillow, un fork (bifuración) más moderno de éste.

Para Python 3, existe un fork llamado python3-qrcode que puedes encontrar en este enlace.

Instalación

Para la instalación de ambos puedes utilizar pip, ejecutando el siguiente comando.

pip install qrcode

Si Pillow no es instalado automáticamente, también:

pip install pillow

De otro modo, puedes descargar el código de fuente de qrcode desde GitHub y el de Pillow desde PyPI, extraerlos e instalar ambos módulos ejecutando:

python setup.py install

Además, en la misma página, Pillow provee instaladores automáticos para usuarios de Microsoft Windows.

Ejemplos

La imágen al comienzo del artículo ha sido generada a partir del código a continuación. Si utilizas un lector de código QR, obtendrás como resultado el mensaje «Hola desde Recursos Python!».

import qrcode

img = qrcode.make("Hola desde Recursos Python!")

f = open("output.png", "wb")
img.save(f)
f.close()

Éste es el tipo de utilización más básico del módulo. Puedes ampliar la información en la página de PyPI o bien en los ejemplos de GitHub.

Además, puede ejecutarse desde la terminal o línea de comandos a través del script qr:

qr "Hola desde Recursos Python!" > output.png

Es probable que en Windows el comando qr no sea reconocido, aunque podrás encontrar el script en la carpeta Scripts/ dentro del directorio de instalación de Python.

Curso online 👨‍💻

¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

Consultoría 💡

Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

12 comentarios.

  1. Buenas, como podria incorporar estas herramientas en mi website? tengo una funcion para convertir el html en un pdf y el cliente quiere/gustaria que tambien pueda generar un qr con la informacion del html, pero no encuentro manera de generar el qr dentro del website

    • Recursos Python says:

      Hola. Depende el lenguaje en el que esté programado el sitio. Si está desarrollado con Python, no habría ningún problema en incluir este código.

      Saludos

  2. Osvaldo Cano says:

    hola amigo, como te encuentras?
    la generación de este código podría servir para direccionar un objeto, es decir, un carro no tripulado debe dar una curva hacia la derecha, se podría direccionar por esté medio y tiene alguna idea de cómo funciona?

  3. ey Hola al nombre que le doy a la imagen en la parte de:
    f = open(«output.png», «wb»)

    yo le pongo el mismo nombre y todo pero me sale el sgt error:
    PermissionError: [Errno 13] Permission denied: ‘output.png’

    AIUUUDA

    • Recursos Python says:

      Hola. No tenés permisos suficientes para escribir en la ubicación de tu archivo de Python. Tenés dos soluciones: ejecutar Python como administrador o mover tu archivo a una ubicación que no requiera permisos de administrador.

      Saludos

  4. Un favor nose xq me da error al instalar la herramienta qrcode es toy trabajando en Windows 8.0 ya instale pip = pill = pillow= pero para generar lcodigos qr no de funciona algun consejo amigo? gracias por el tutorial…

    • Recursos Python says:

      Hola, me alegro que te haya servido. Al parecer esta herramienta no permite decodificar imagenes, pero puedes darle un vistazo a QR Tools que soporta ambas funciones (codificar y decodificar), seguramente se ajuste mejor a tus necesidades.

      Un saludo.

Deja una respuesta