Estoy desarrollando una pequeña utilidad para generar códigos QR, decisión tomada después de querer hacer uno en una web y me pidiera pagar por algo como agregar un icono.
Como sea, la intención es que se pueda usar en la linea de comandos o con una GUI.
Pero necesito algo de retroalimentación primero. Quisiera conocer que funcionalidades esperan de una utilidad como esta, asi como sugerencias para la estructura de la interfaz gráfica y la linea de comandos.
Por poder se puede, pero se que existen varios estándares para los códigos de barras, tendría que revisar eso. Si lo implemento seria algo mucho más simple que los QR
La intención es que la salida final sea una imagen típica, ya sabes, png, svg o similares. Para eso en la linea de comandos existirán parámetros opcionales para configurar los colores.
No me imagino como implementar escapes ANSI en este caso.
Si quieres ver un QR de colores en la terminal debería seguir las configuraciones de los parámetros.
Hace un par de días justo necesitaba generar un código QR sin mucha dificultad ni restricciones. Con eso en mente, te diría de empezar por una aplicación muy sencilla que haga bien una sola cosa, que le pases un texto y te genere el código QR, sin complicaciones. Piensa que muchas veces las primeras personas que usen tu utilidad son los que buscan algo sencillo, rápido efectivo.
Cuando tengas eso realmente listo y funcional, podrías agregarle cosas a medida. Siempre es mejor empezar por algo simple para hacerlo factible. Muchas veces por querer agregarle más y más funcionalidades, terminas por no ofrecer ninguna porque en ningún momento tienes la utilidad lista para los usuarios.
Ideas que se me ocurren a futuro: opciones para elegir el tamaño del QR, códigos de barras.
Si me esperan, este fin de semana voy a subir un capitulo más al curso de Python que trate este tema.
Les voy a enseñar a usar la librería de manera sencilla para que puedan generar códigos QR con un simple script. A partir de ahí, ustedes podrán usar el codigo en la aplicación que quieran, aunque sea en otro lenguaje.
Ahora que este foro estuvo fuera de mi alcance me di a la tarea de continuar con esto que deje en pausa al estar haciendo cosas más importantes (nada), y pues por lo menos ya hace algo…
Actualización para quien le interese…
Ya hay gradientes. Se supone que pueden agregar una cantidad arbitraria de colores y esto deberia de funcionar. Yo he probado de 1 (o sin gradiente) a 3 colores, y no explota xP
Y ya que estamos, necesito retroalimentación respecto al nombre de los argumentos.
Dejo el texto completo del --help para que observen las posibilidades y ver si a alguno se le puede cambiar el nombre por uno que se deje recordar con mayor facilidad, sobre todo si se les ocurre uno corto, para que exista algo tipo --long-name=value y -lg=value, ya saben, cosas así.
Generate a QR code from plain text. Recommended for URLs and other text data
Usage: qrosity cli text [OPTIONS]
Options:
#Esto puede cambiar dependiendo de si crean un
# QR para compartir WiFi, una vCard, una
# plantilla de email, etc.
--input <INPUT>
Text to encode in the QR code
# --------------------------------------
--quiet-zone <QUIET_ZONE>
Quiet zone size (0-10 modules)
[default: 4]
--ecl <ECL>
Error correction level
Possible values:
- low: The QR Code can tolerate about 7% erroneous codewords
- medium: The QR Code can tolerate about 15% erroneous codewords
- quartile: The QR Code can tolerate about 25% erroneous codewords
- high: The QR Code can tolerate about 30% erroneous codewords
[default: medium]
--colors <COLORS>...
Foreground color(s). If multiple colors are provided, a gradient is created.
[default: #000000]
--background <BACKGROUND>
Background color in hex format
[default: #FFFFFF]
--gradient-direction <GRADIENT_DIRECTION>
Gradient direction
[default: top-left-to-bottom-right]
[possible values: top-to-bottom, left-to-right, top-left-to-bottom-right, bottom-left-to-top-right]
--ppm <PPM>
Pixels per module
[default: 20]
--boost-error-correction
Boost error correction level
--shape <SHAPE>
Module shape
[default: square]
[possible values: square, dots, gapped, heart, diamond]
--finder <FINDER>
Finder shape
[default: square]
[possible values: square, circle, rounded]
--icon <ICON>
Path to an icon image to embed in the QR code
--output <OUTPUT>
Output file path
[default: qr_2025-11-30_23:01:31.png]
-h, --help
Print help (see a summary with '-h')
No me refiero mantener dos nombres para el programa, me refiero específicamente a abreviaciones o cambios de nombres a las opciones/argumentos del programa. Un ejemplo, para --help se suele usar la abreviatura -h, lo mismo con --verbose y -v, o --version y -v, y así. También me refiero al nombre de las opciones para saber si se les hacen contra intuitivas o se les ocurre un mejor nombre para describir la opción. O si piensan que le falta algo más.