QR-Code-Generator in Rust: Die Bibliothek qr_code
QR-Codes sind zu einem festen Bestandteil des modernen Webs und mobiler Anwendungen geworden. Sie werden für den schnellen Austausch von Links, Kontakten, Zahlungsdaten und anderen Informationen verwendet. Wenn Sie in Rust entwickeln und Ihrem Projekt eine QR-Code-Generierung hinzufügen möchten, ist die Bibliothek qr_code eine der besten Lösungen. In diesem Artikel werden wir im Detail besprechen, wie Sie diese Bibliothek installieren, konfigurieren und verwenden, um QR-Codes direkt im Rust-Code zu erstellen.
Was ist die Bibliothek qr_code?
qr_code ist eine reine Rust-Bibliothek zur Generierung von QR-Codes (Version 2) ohne externe Abhängigkeiten. Sie ermöglicht die Erstellung von QR-Codes aus Zeichenfolgen, die Anpassung der Fehlerkorrekturstufe, der Modulgröße und der Farbe. Die Bibliothek unterstützt die Ausgabe im SVG-, PNG- (über image) und ASCII-Grafikformat für das Terminal. Die Hauptvorteile sind:
- Hohe Leistung (Rust ohne GC).
- Minimaler Speicherverbrauch.
- Unterstützung aller vier Fehlerkorrekturstufen (L, M, Q, H).
- Flexible Anpassung des QR-Code-Erscheinungsbildes.
Installation
Fügen Sie die Abhängigkeit zu Ihrer Cargo.toml hinzu:
[dependencies]qr_code = "0.2.0"Wenn Sie eine PNG-Ausgabe benötigen, installieren Sie zusätzlich die Crate image:
image = "0.24"Führen Sie anschließend cargo build aus, um die Bibliothek herunterzuladen und zu kompilieren.
Basisbeispiel: QR-Code-Generierung in SVG
Der einfachste Weg, einen QR-Code zu erhalten, ist das Speichern im Vektorformat SVG. Nachfolgend finden Sie ein minimales funktionierendes Beispiel:
use qr_code::QrCode;
fn main() { // QR-Code aus einem String erstellen let code = QrCode::new("https://pythonlib.ru").unwrap(); // SVG-String mit einer Modulbreite von 8 Pixeln generieren let svg = code.to_svg().with_width(8).to_string(); // In Datei speichern std::fs::write("qrcode.svg", svg).unwrap(); println!("QR-Code gespeichert in qrcode.svg");}Nach dem Ausführen erhalten Sie eine Datei qrcode.svg, die Sie im Browser öffnen oder in eine HTML-Seite einfügen können.
Anpassung der Fehlerkorrekturstufe
Die Korrekturstufe bestimmt, wie stark ein QR-Code beschädigt werden kann, aber dennoch lesbar bleibt. Die Bibliothek unterstützt vier Stufen:
ErrorCorrection::Low— 7% der Daten können wiederhergestellt werden.ErrorCorrection::Medium— 15%.ErrorCorrection::Quartile— 25%.ErrorCorrection::High— 30%.
Anwendungsbeispiel:
use qr_code::{QrCode, ErrorCorrection};
let code = QrCode::with_error_correction( "Geheimer Code", ErrorCorrection::High).unwrap();
let svg = code.to_svg().with_width(10).to_string();std::fs::write("secret_qr.svg", svg).unwrap();QR-Code-Generierung in PNG (Rasterbild)
Für die PNG-Ausgabe wird die Crate image benötigt. Fügen Sie diese zunächst zu Ihrer Cargo.toml hinzu und verwenden Sie dann den folgenden Code:
use qr_code::QrCode;use image::{Luma, ImageBuffer};
fn main() { let code = QrCode::new("Rust ist großartig!").unwrap(); // Bild erstellen: jedes Modul = 10 Pixel let size = code.width() * 10; let mut img = ImageBuffer::new(size as u32, size as u32); // Mit weißem Hintergrund füllen for pixel in img.pixels_mut() { *pixel = Luma([255u8]); } // Schwarze Module zeichnen 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. Auch in der Bibliothek
Event Bus und das Observer-Muster in C++: Implementierung und Beispiele
Geolokalisierung und Karten in C++: Überblick über Bibliotheken und Werkzeuge
Geolokalisierung und Karten in C++: Überblick über Bibliotheken und Werkzeuge
Verwendung von GraphQL in Swift: Die Bibliotheken Apollo und Relay für iOS/macOS