Générateur de QR codes en Rust : bibliothèque qr_code
Les QR codes sont devenus une partie intégrante du web moderne et des applications mobiles. Ils sont utilisés pour échanger rapidement des liens, des contacts, des données de paiement et d'autres informations. Si vous développez en Rust et souhaitez ajouter la génération de QR codes à votre projet, la bibliothèque qr_code est l'une des meilleures solutions. Dans cet article, nous allons détailler comment installer, configurer et utiliser cette bibliothèque pour créer des QR codes directement dans du code Rust.
Qu'est-ce que la bibliothèque qr_code ?
qr_code est une bibliothèque Rust pure pour la génération de QR codes (version 2) sans dépendances externes. Elle permet de créer des QR codes à partir de données textuelles, de configurer le niveau de correction d'erreurs, la taille du module et la couleur. La bibliothèque prend en charge la sortie aux formats SVG, PNG (via image) et sous forme de graphiques ASCII pour le terminal. Principaux avantages :
- Haute performance (Rust sans GC).
- Consommation mémoire minimale.
- Prise en charge des quatre niveaux de correction d'erreurs (L, M, Q, H).
- Configuration flexible de l'apparence du QR code.
Installation
Ajoutez la dépendance dans votre Cargo.toml :
[dependencies]qr_code = "0.2.0"Si vous avez besoin d'une sortie PNG, installez également la crate image :
image = "0.24"Ensuite, exécutez cargo build pour télécharger et compiler la bibliothèque.
Exemple de base : génération d'un QR code en SVG
Le moyen le plus simple d'obtenir un QR code est de le sauvegarder au format vectoriel SVG. Voici un exemple fonctionnel minimal :
use qr_code::QrCode;
fn main() { // Créer un QR code à partir d'une chaîne let code = QrCode::new("https://pythonlib.ru").unwrap(); // Générer une chaîne SVG avec une taille de module de 8 pixels let svg = code.to_svg().with_width(8).to_string(); // Sauvegarder dans un fichier std::fs::write("qrcode.svg", svg).unwrap(); println!("QR code sauvegardé dans qrcode.svg");}Après exécution, vous obtiendrez un fichier qrcode.svg que vous pouvez ouvrir dans un navigateur ou insérer dans une page HTML.
Configuration du niveau de correction d'erreurs
Le niveau de correction détermine à quel point un QR code peut être endommagé tout en restant lisible. La bibliothèque prend en charge quatre niveaux :
ErrorCorrection::Low— 7% des données peuvent être récupérées.ErrorCorrection::Medium— 15%.ErrorCorrection::Quartile— 25%.ErrorCorrection::High— 30%.
Exemple d'utilisation :
use qr_code::{QrCode, ErrorCorrection};
let code = QrCode::with_error_correction( "Code secret", ErrorCorrection::High).unwrap();
let svg = code.to_svg().with_width(10).to_string();std::fs::write("secret_qr.svg", svg).unwrap();Génération d'un QR code en PNG (image raster)
Pour une sortie PNG, vous aurez besoin de la crate image. Ajoutez-la d'abord dans Cargo.toml, puis utilisez le code suivant :
use qr_code::QrCode;use image::{Luma, ImageBuffer};
fn main() { let code = QrCode::new("Rust est génial !").unwrap(); // Créer une image : chaque module = 10 pixels let size = code.width() * 10; let mut img = ImageBuffer::new(size as u32, size as u32); // Remplir avec un fond blanc for pixel in img.pixels_mut() { *pixel = Luma([255u8]); } // Dessiner les modules noirs for y in 0..code.width() { for x in 0..code.width() { if code[(x, y)] { let px = x as u32 * 10; let py = y as u32 * 10; for dy in 0..10 { for dx in 0..10 { img. Aussi dans la bibliothèque
OpenSSL C++ : guide complet avec exemples pratiques
multierr Go : guide complet avec exemples
Planificateur de tâches PHP : guide complet sur les tâches cron et le Task Scheduler