Este artículo tiene como objetivo presentar el uso de la biblioteca de python: qrtools. Esta biblioteca se puede utilizar tanto para leer códigos QR como para generarlos.
¿Qué son los códigos QR?
El código QR, o código de respuesta rápida, es una marca comercial para un tipo de código de barras bidimensional. Los códigos de barras bidimensionales son similares a los códigos de barras unidimensionales, pero pueden almacenar más información por unidad de área.
Instalación y Dependencias
- Debian Linux: qrtools se puede instalar en sistemas Linux basados en Debian con los siguientes comandos
sudo apt-get update sudo apt-get install python-qrtools
Las siguientes dependencias también deben estar instaladas
[sudo] pip install pypng [sudo] pip install zbar [sudo] pip install pillow
- Windows: qrtools se puede instalar en Windows descargando el archivo desde aquí . Al descargar y extraer, ejecute el siguiente comando desde dentro de la carpeta
python setup.py install
Generar un Código QR
qrtools contiene una clase QR (se puede ver en el código fuente), para la cual inicialmente debemos crear un objeto. El objeto toma los siguientes argumentos
- datos
- tamaño_píxel
- nivel
- margen_tamaño
- tipo de datos
Para crear un código QR con la configuración predeterminada, simplemente debemos especificar los datos al crear el objeto. Tenga en cuenta que los datos deben ser un objeto Unicode si se van a utilizar objetos que no sean ASCII.
# Python program to generate QR code from qrtools import QR # creates the QR object my_QR = QR(data = u"Example") # encodes to a QR code my_QR.encode()
Si el programa se ejecuta correctamente, devuelve un valor de 0 y el código QR se almacena en la carpeta tmp. Para saber la ubicación exacta, use el siguiente comando
print (my_QR.filename)
Salida de muestra
/tmp/qr-1496334996.385343/7489ebbcc2a00056ddaaaac190bce473e5c03696ea1bd8ed83cf59a174283862.png
Este archivo ahora se puede mover a otra carpeta según nuestra conveniencia
# Python program to generate QR code from qrtools import QR import os my_QR = QR(data = u"Example") my_QR.encode() # command to move the QR code to the desktop os.system("sudo mv " + my_QR.filename + " ~/Desktop")
El valor de píxel del código QR también se puede cambiar especificando el valor durante la creación del objeto QR. El tamaño predeterminado tiende a ser un poco pequeño para leer usando escáneres en teléfonos inteligentes, por lo que un tamaño de alrededor de 10 sería ideal para tales propósitos, por ejemplo:
my_QR = QR(data = u"example", pixel_size = 10)
El siguiente código QR tiene un tamaño de píxel = 10 y se ha codificado con una URL
También podemos agregar datos de correo electrónico, datos de sms, datos de mms, marcadores, etc. al código QR. El siguiente extracto de código se toma del código fuente, que especifica los distintos tipos de datos que se pueden usar junto con el formato de los datos que se requerirían para su uso:
# use these for custom data formats eg. url, phone number, VCARD # data should be an unicode object or a list of unicode objects data_encode = { 'text': lambda data: data, 'url': encode_url, 'email': lambda data: 'mailto:' + re.compile( r'^mailto:', re.IGNORECASE ).sub('', data), 'emailmessage': lambda data: 'MATMSG:TO:' + data[0] + ';SUB:' + data[1] + ';BODY:' + data[2] + ';;', 'telephone': lambda data: 'tel:' + re.compile( r'^tel:', re.IGNORECASE ).sub('', data), 'sms': lambda data: 'SMSTO:' + data[0] + ':' + data[1], 'mms': lambda data: 'MMSTO:' + data[0] + ':' + data[1], 'geo': lambda data: 'geo:' + data[0] + ', ' + data[1], 'bookmark': lambda data: "MEBKM:TITLE:" + data[0] + ";URL:" + data[1] + ";;", # phonebook or meCard should be a list of tuples like this: # [('N', 'Name'), ('TEL', '231698890'), ...] 'phonebook': lambda data: "MECARD:" + ";".join([":".join(i) for i in data]) + ";" }
A partir del código anterior, observamos los diversos tipos de datos que se pueden asignar y utilizar al crear códigos QR. Por ejemplo, para utilizar un marcador como dato, debemos proporcionar los datos en forma de lista, que consta de un título y la url. Para lograr esto, debemos hacer lo siguiente
# Python program to generate QR code from qrtools import QR # creates the QR object my_QR = QR(data = [u"geeksforgeeks", u"https://www.geeksforgeeks.org/"], data_type = 'bookmark') # encodes to a QR code my_QR.encode()
Leer un código QR
Escanear y leer un código QR es relativamente simple. Al crear el objeto QR, simplemente debemos especificar la ruta al código QR como argumento. Supongamos que estamos tratando de decodificar el código QR creado al principio del artículo.
# Python program to Scan and Read a QR code from qrtools import QR my_QR = QR(filename = "home/user/Desktop/qr.png") # decodes the QR code and returns True if successful my_QR.decode() # prints the data print (my_QR.data)
Producción :
Example
También podemos imprimir los valores de los otros parámetros pasados al crear el objeto QR para generar el código QR, por ejemplo, usando el mismo código QR generado al principio del artículo, además, agregar estas declaraciones de impresión daría el siguiente resultado adicional
print (my_QR.data_type) print (my_QR.pixel_size) print (my_QR.margin_size)
Producción:
text 3 4
Este artículo es una contribución de Deepak Srivatsav . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA