Gerador de QR Codes em Kotlin: guia completo
Os QR Codes se tornaram uma parte essencial do mundo digital moderno. Eles são usados para troca rápida de informações: desde links para sites até dados de contato e senhas de Wi-Fi. Neste artigo, veremos como criar seu próprio gerador de QR Codes na linguagem Kotlin usando a biblioteca popular ZXing («Zebra Crossing»). Kotlin, sendo uma linguagem moderna e concisa, é perfeita para o desenvolvimento de aplicações tanto servidoras quanto móveis para Android. Você aprenderá como gerar QR Codes de vários tipos, personalizar sua aparência e integrá-los em seus projetos.
Por que Kotlin e ZXing?
Kotlin é uma linguagem estaticamente tipada que roda sobre a JVM, ativamente suportada pelo Google para desenvolvimento Android. Sua sintaxe é limpa e expressiva, tornando o código mais legível e menos propenso a erros. A biblioteca ZXing é o padrão de facto para trabalhar com QR Codes e códigos de barras no ecossistema Java/Kotlin. Ela suporta vários formatos (QR Code, Data Matrix, Aztec e outros) e oferece opções flexíveis de personalização.
Instalação e configuração
Para começar, adicione a dependência ao seu arquivo build.gradle.kts (se você usa Gradle):
// Para projeto JVMimplementation("com.google.zxing:core:3.5.3")implementation("com.google.zxing:javase:3.5.3")
// Para projeto Android (geralmente apenas core é suficiente)implementation("com.google.zxing:core:3.5.3")Se você trabalha com Maven, adicione as dependências correspondentes no pom.xml.
Exemplo básico: gerando um QR Code simples
Vamos criar uma função simples que gera um QR Code a partir de uma string de texto e o salva como uma imagem PNG.
import com.google.zxing.BarcodeFormatimport com.google.zxing.qrcode.QRCodeWriterimport com.google.zxing.client.j2se.MatrixToImageWriterimport java.nio.file.Paths
fun generateQRCode(text: String, filePath: String, width: Int = 300, height: Int = 300) { val writer = QRCodeWriter() val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height) val path = Paths.get(filePath) MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path) println("QR Code salvo com sucesso em: $filePath")}
fun main() { generateQRCode("https://pythonlib.ru", "qrcode_pythonlib.png")}Explicação do código:
QRCodeWriter()— cria uma instância do writer para QR Codes.encode()— codifica a string em uma matriz de bits (imagem preto e branco).MatrixToImageWriter.writeToPath()— método conveniente para salvar a matriz em um arquivo.
Configuração de cor e tamanho
Por padrão, o QR Code é gerado em preto e branco. Você pode alterar suas cores usando MatrixToImageConfig. Aqui está um exemplo com código verde em fundo branco:
import com.google.zxing.client.j2se.MatrixToImageConfigimport java.awt.Colorimport java.awt.image.BufferedImage
fun generateColoredQRCode(text: String, filePath: String, foregroundColor: Color = Color.BLACK, backgroundColor: Color = Color.WHITE) { val writer = QRCodeWriter() val bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300) val config = MatrixToImageConfig(foregroundColor.rgb, backgroundColor.rgb) val bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix, config) // Salvando o BufferedImage em um arquivo val outputFile = java.io.File(filePath) javax.imageio.ImageIO.write(bufferedImage, "PNG", outputFile) println("QR Code colorido salvo em: $filePath")}
fun main() { generateColoredQRCode("Hello, Kotlin!", "colored_qr.png", foregroundColor = Color(0x00AA00), Também na biblioteca
Juniper: Biblioteca GraphQL completa para Rust
Trabalho com datas em C# (.NET): visão geral de bibliotecas e ferramentas nativas