Blog
Los códigos QR (abreviatura de Quick Response Code en inglés) son un módulo que para almacenar información en una matriz de puntos o en un código de barras bidimensional. En pocas palabras, son la evolución del código de barras convencional. Debido al aumento de teléfonos inteligentes estos códigos se han vuelto muy conocidos ya que sirven para almacenar mapas de localización, correos electrónicos, páginas web o un perfil en cualquier red social. La información codificada puede estar hecha de cualquier tipo de datos (binario, alfanumérico o incluso símbolos kanji). En este artículo realizaremos un script para generar código QR parecido a este:
Ya conocemos la gran cantidad de módulos que tiene Python, así que no es de extrañarnos que exista un módulo en Python para trabajar con códigos QR. El módulo qrcode
nos permite generar códigos QR a partir de cadenas de texto (strings). Lo único que necesitamos es una previa instalación de PIL, un paquete para el manejo de imágenes o un fork más actual del mismo llamado Pillow.
Instalar qrcode
Para instalar paquetes en Python podemos utilizar la herramienta pip
:
pip --user install qrcode
O si se está dentro de un entorno virtual:
pip install qrcode
También debemos instalar el paquete Pillow:
pip install pillow
Si deseas puedes descargar el código fuente para qrcode desde la cuenta Github del desarrollador y Pillow desde PyPI, extraerlos e instalar los módulos con el siguiente comando:
python setup.py install
Ejemplos
Vamos a generar un código QR con este paquete que nos muestre una cadena de texto. Las imágenes al comienzo del artículo han sido generadas de esta forma, si cuentas con un lector de códigos QR podrás ver su mensaje secreto.
import qrcode # Importamos el modulo necesario para trabajar con codigos QR imagen = qrcode.make('Hola mundo!') # Creamos un codigo a partir de una cadena de texto archivo_imagen = open('codigo.png', 'wb') img.save(archivo_imagen) archivo_imagen.close()
Este es un ejemplo básico del uso de este módulo. También puedes usarlo desde la terminal con el script qr
:
qr "hola mundo, primer codigo QR" > codigo.png
Veamos otro ejemplo de un uso un poco más complejo. El módulo qrcode
nos permite modificar el tamaño de la imagen, que datos estarán dentro de ella y el error de corrección que determina la capacidad que tiene el código para restaurar información si ha sido dañado.
import qrcode # Creamos un objeto codigo QR qr = qrcode.QRCode( version = 1, error_correction = qrcode.constants.ERROR_CORRECT_H, box_size = 10, border = 4 ) # Podemos crear la informacion que queremos # en el codigo de manera separada info = 'Necesitamos guardar este texto en el codigo QR' # Agregamos la informacion qr.add_data(info) qr.make(fit=True) # Creamos una imagen para el objeto código QR imagen = qr.make_image() # Guardemos la imagen con la extension que queramos imagen.save('codigo.png')
La ejecución de nuestro script solo nos genera la imagen con el nombre ‘codigo.png’ la cual podemos encontrar en la carpeta en la que ejecutamos el programa, en nuestro caso esta ha sido el código QR resultante:
buen aporte!!.
Gracias, excelente
Un problema que no puedo resolver: cuando genero varias imagen qr a partir de una tabla
for row in cur:
info = ” ”
info=(row[‘documento’],row[‘apellidopaterno’],row[‘nombres’])
imagendoc= (row[‘documento’])
imagenape = (row[‘apellidopaterno’])
#armo el nombre de archivo de la imange
archivimg = imagendoc + imagenape + “.png”
qr.add_data(info)
qr.make(fit=True)
#Creamos una imagen para el objeto código QR
imagen = qr.make_image()
#Guardemos la imagen con la extension que queramos
imagen.save(archivimg)
el tema es que me concatena la información en la imagen de varios registros , a pesar de blanquear la variable info , ¿que me falta?