Gerador de QR Codes em Rust: biblioteca qr_code

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Gerador de QR Codes em Rust: biblioteca qr_code



Os QR codes se tornaram parte essencial da web moderna e dos aplicativos móveis. Eles são usados para compartilhar rapidamente links, contatos, dados de pagamento e outras informações. Se você desenvolve em Rust e deseja adicionar geração de QR codes ao seu projeto, a biblioteca qr_code é uma das melhores soluções. Neste artigo, vamos detalhar como instalar, configurar e usar esta biblioteca para criar QR codes diretamente no código Rust.



O que é a biblioteca qr_code?

qr_code é uma biblioteca Rust pura para geração de QR codes (versão 2) sem dependências externas. Ela permite criar QR codes a partir de dados de string, configurar o nível de correção de erros, o tamanho do módulo e a cor. A biblioteca suporta saída nos formatos SVG, PNG (através de image) e como gráficos ASCII para terminal. Principais vantagens:

  • Alta performance (Rust sem GC).
  • Consumo mínimo de memória.
  • Suporte a todos os quatro níveis de correção de erros (L, M, Q, H).
  • Configuração flexível da aparência do QR code.


Instalação

Adicione a dependência ao seu Cargo.toml:

[dependencies]qr_code = "0.2.0"

Se precisar de saída em PNG, instale também o crate image:

image = "0.24"

Depois disso, execute cargo build para baixar e compilar a biblioteca.



Exemplo básico: geração de QR code em SVG

A maneira mais simples de obter um QR code é salvá-lo no formato vetorial SVG. Abaixo está um exemplo funcional mínimo:

use qr_code::QrCode;

fn main() { // Cria um QR code a partir de uma string let code = QrCode::new("https://pythonlib.ru").unwrap(); // Gera a string SVG com tamanho de módulo de 8 pixels let svg = code.to_svg().with_width(8).to_string(); // Salva em arquivo std::fs::write("qrcode.svg", svg).unwrap(); println!("QR code salvo em qrcode.svg");}

Após a execução, você obterá o arquivo qrcode.svg, que pode ser aberto no navegador ou inserido em uma página HTML.



Configuração do nível de correção de erros

O nível de correção determina o quanto o QR code pode ser danificado e ainda permanecer legível. A biblioteca suporta quatro níveis:

  • ErrorCorrection::Low — 7% dos dados podem ser recuperados.
  • ErrorCorrection::Medium — 15%.
  • ErrorCorrection::Quartile — 25%.
  • ErrorCorrection::High — 30%.

Exemplo de uso:

use qr_code::{QrCode, ErrorCorrection};

let code = QrCode::with_error_correction( "Código secreto", ErrorCorrection::High).unwrap();

let svg = code.to_svg().with_width(10).to_string();std::fs::write("secret_qr.svg", svg).unwrap();


Geração de QR code em PNG (imagem raster)

Para saída em PNG, será necessário o crate image. Primeiro, adicione-o ao Cargo.toml, depois use o seguinte código:

use qr_code::QrCode;use image::{Luma, ImageBuffer};

fn main() { let code = QrCode::new("Rust é incrível!").unwrap(); // Cria a imagem: cada módulo = 10 pixels let size = code.width() * 10; let mut img = ImageBuffer::new(size as u32, size as u32); // Preenche com fundo branco for pixel in img.pixels_mut() { *pixel = Luma([255u8]); } // Desenha os módulos pretos 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.

Recommendations