Gerador de QR Codes em Rust: ferramenta poderosa para seu projeto
\n\nOs 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.
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.
Instalação e configuração
\n\nPara 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:
[dependencies]\nqrcode = "0.14"\nimage = "0.24"\n\nDepois disso, execute cargo build para baixar as dependências.
Exemplo básico: geração de QR Code no console
\n\nO 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\nuse 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\nNeste 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_colorelight_color— definem os caracteres para módulos escuros e claros. \n
Execute o programa — um QR Code aparecerá no terminal, que pode ser escaneado com o celular.
\n\nSalvando QR Code em imagem PNG
\n\nPara projetos reais, precisamos de uma imagem, não de texto. A biblioteca qrcode suporta renderização em imagens raster através da crate image.
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\nAqui:
\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_colorelight_color— cores dos módulos (preto e branco). \n
Após executar o programa, o arquivo qrcode.png aparecerá na raiz do projeto.
Personalização de cor e tamanho
\n\nVocê pode alterar as cores do QR Code usando valores RGB. Por exemplo, vamos fazer um QR Code azul sobre fundo amarelo:
\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 Também na biblioteca
Processamento JSON em Java: bibliotecas Jackson e Gson para manipulação de dados
Newtonsoft.Json para C# (.NET): guia completo com exemplos
Cliente Elasticsearch para C# (.NET): NEST e Elastic.Clients.Elasticsearch
Trabalho com datas em Go (Golang): visão geral de bibliotecas e pacotes
Testes em JavaScript (Node.js): frameworks e ferramentas