Generador de códigos QR en Rust: una herramienta potente para tu proyecto
\n\nLos códigos QR se han convertido en una parte esencial de la web moderna: enlaces, contactos, contraseñas de Wi-Fi, todo esto se puede codificar en una imagen cuadrada. Si estás desarrollando un sitio educativo o un servicio en Rust, la generación de códigos QR puede ser una función útil. En este artículo, exploraremos la librería qrcode para Rust, aprenderemos a crear códigos QR, personalizar su apariencia e integrarlos en aplicaciones web.
Rust es un lenguaje de programación de sistemas valorado por su rendimiento y seguridad. La librería qrcode aprovecha todas las ventajas de Rust: es rápida, no requiere dependencias externas y se integra fácilmente en cualquier proyecto. Analicemos cómo generar códigos QR con ella.
Instalación y configuración
\n\nPara trabajar con códigos QR en Rust necesitaremos el crate qrcode y, si se necesita guardar imágenes, el crate image. Agrégalos al archivo Cargo.toml:
[dependencies]\nqrcode = "0.14"\nimage = "0.24"\n\nDespués de esto, ejecuta cargo build para descargar las dependencias.
Ejemplo básico: generación de código QR en la consola
\n\nEl primer ejemplo es el más simple: mostraremos el código QR directamente en la terminal. Esto es útil para depuración o cuando no se necesita guardar la imagen.
\n\nuse qrcode::QrCode;\nuse qrcode::render::unicode;\n\nfn main() {\n // Creamos un código QR a partir de una cadena\n let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n // Renderizamos en caracteres Unicode\n let image = code.render::<unicode::Dense1x2>()\n .dark_color(unicode::Dense1x2::Dark)\n .light_color(unicode::Dense1x2::Light)\n .build();\n\n println!("{}", image);\n}\n\nEn este código:
\n- \n
QrCode::new()— crea un código QR a partir de una cadena. Si la cadena es demasiado larga, el método devolverá un error; usa.unwrap()solo para ejemplos. \n render::<unicode::Dense1x2>— selecciona el renderizador Unicode. Muestra el código usando caracteres de pseudografía. \n dark_colorylight_color— definen los caracteres para los módulos oscuros y claros. \n
Ejecuta el programa: en la terminal aparecerá un código QR que se puede escanear con el teléfono.
\n\nGuardar el código QR en una imagen PNG
\n\nPara proyectos reales, no se necesita texto, sino una imagen. La librería qrcode admite el renderizado en imágenes rasterizadas a través del crate image.
use qrcode::QrCode;\nuse image::Luma;\n\nfn main() {\n let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n // Renderizamos en una imagen (tamaño de módulo de 8 píxeles)\n let image = code.render::<Luma<u8>>()\n .min_dimensions(200, 200) // tamaño mínimo\n .dark_color(Luma([0u8])) // negro\n .light_color(Luma([255u8])) // blanco\n .build();\n\n // Guardamos en un archivo\n image.save("qrcode.png").unwrap();\n println!("Código QR guardado en qrcode.png");\n}\n\nAquí:
\n- \n
Luma<u8>— tipo de píxel para imagen en blanco y negro. \n min_dimensions(200, 200)— define el ancho y alto mínimos. El código QR se escala automáticamente. \n dark_colorylight_color— colores de los módulos (negro y blanco). \n
Después de ejecutar el programa, aparecerá un archivo qrcode.png en la raíz del proyecto.
Personalización de color y tamaño
\n\nPuedes cambiar los colores del código QR usando valores RGB. Por ejemplo, hagamos un código QR azul sobre fondo amarillo:
\n\nuse qrcode::QrCode;\nuse image::Rgb;\n\nfn main() {\n let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n let image = code.render::<Rgb<u8>>()\n .min_dimensions(300, 300)\n .dark_color(Rgb([0, 100, 200])) // azul También en la biblioteca
Prost para Rust: guía completa con ejemplos
Integración de métricas de Prometheus en C++: biblioteca prometheus-cpp
gRPC para JavaScript (Node.js): bibliotecas, configuración y ejemplos de código