Gerador de QR Codes em Rust: criação e integração em aplicações web

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: ferramenta poderosa para seu projeto

\n\n

Os QR Codes se tornaram parte essencial da web moderna: links, contatos, senhas de Wi-Fi — tudo isso pode ser codificado em uma imagem quadrada. Se você está desenvolvendo um site educacional ou serviço em Rust, a geração de QR Codes pode ser uma funcionalidade útil. Neste artigo, vamos explorar a biblioteca qrcode para Rust, aprender a criar QR Codes, personalizar sua aparência e integrá-los em aplicações web.

\n\n

Rust é uma linguagem de programação de sistemas, valorizada por seu desempenho e segurança. A biblioteca qrcode aproveita todas as vantagens do Rust: é rápida, não requer dependências externas e é facilmente incorporável em qualquer projeto. Vamos entender como gerar QR Codes com ela.

\n\n

Instalação e configuração

\n\n

Para trabalhar com QR Codes em Rust, precisamos da crate qrcode e, se for necessário salvar imagens, da crate image. Adicione-as ao arquivo Cargo.toml:

\n\n
[dependencies]\nqrcode = "0.14"\nimage = "0.24"
\n\n

Depois disso, execute cargo build para baixar as dependências.

\n\n

Exemplo básico: geração de QR Code no console

\n\n

O primeiro exemplo é o mais simples: vamos exibir o QR Code diretamente no terminal. Isso é útil para depuração ou quando não é necessário salvar a imagem.

\n\n
use qrcode::QrCode;\nuse qrcode::render::unicode;\n\nfn main() {\n    // Cria um QR Code a partir de uma string\n    let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n    // Renderiza em 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\n

Neste código:

\n
    \n
  • QrCode::new() — cria um QR Code a partir de uma string. Se a string for muito longa, o método retornará um erro — use .unwrap() apenas para exemplos.
  • \n
  • render::<unicode::Dense1x2> — seleciona o renderizador Unicode. Ele exibe o código usando caracteres de pseudográfica.
  • \n
  • dark_color e light_color — definem os caracteres para módulos escuros e claros.
  • \n
\n\n

Execute o programa — um QR Code aparecerá no terminal, que pode ser escaneado com o celular.

\n\n

Salvando QR Code em imagem PNG

\n\n

Para projetos reais, precisamos de uma imagem, não de texto. A biblioteca qrcode suporta renderização em imagens raster através da crate image.

\n\n
use qrcode::QrCode;\nuse image::Luma;\n\nfn main() {\n    let code = QrCode::new("https://pythonlib.ru").unwrap();\n\n    // Renderiza em imagem (tamanho do módulo 8 pixels)\n    let image = code.render::<Luma<u8>>()\n        .min_dimensions(200, 200) // tamanho mínimo\n        .dark_color(Luma([0u8]))   // preto\n        .light_color(Luma([255u8])) // branco\n        .build();\n\n    // Salva em arquivo\n    image.save("qrcode.png").unwrap();\n    println!("QR Code salvo em qrcode.png");\n}
\n\n

Aqui:

\n
    \n
  • Luma<u8> — tipo de pixel para imagem em preto e branco.
  • \n
  • min_dimensions(200, 200) — define a largura e altura mínimas. O QR Code é dimensionado automaticamente.
  • \n
  • dark_color e light_color — cores dos módulos (preto e branco).
  • \n
\n\n

Após executar o programa, o arquivo qrcode.png aparecerá na raiz do projeto.

\n\n

Personalização de cor e tamanho

\n\n

Você pode alterar as cores do QR Code usando valores RGB. Por exemplo, vamos fazer um QR Code azul sobre fundo amarelo:

\n\n
use 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                    

Recommendations