Generador de códigos QR en Kotlin: guía completa
Los códigos QR se han convertido en una parte esencial del mundo digital moderno. Se utilizan para intercambiar información rápidamente: desde enlaces a sitios web hasta datos de contacto y contraseñas de Wi-Fi. En este artículo, veremos cómo crear su propio generador de códigos QR en el lenguaje Kotlin utilizando la popular biblioteca ZXing («Zebra Crossing»). Kotlin, al ser un lenguaje moderno y conciso, es ideal tanto para el desarrollo de aplicaciones de servidor como para aplicaciones móviles en Android. Aprenderá a generar códigos QR de varios tipos, personalizar su apariencia e integrarlos en sus proyectos.
¿Por qué Kotlin y ZXing?
Kotlin es un lenguaje de tipado estático que funciona sobre la JVM, y cuenta con el respaldo activo de Google para el desarrollo de Android. Su sintaxis es limpia y expresiva, lo que hace que el código sea más legible y menos propenso a errores. La biblioteca ZXing es el estándar de facto para trabajar con códigos QR y códigos de barras en el ecosistema Java/Kotlin. Admite múltiples formatos (QR Code, Data Matrix, Aztec y otros) y ofrece opciones flexibles de personalización.
Instalación y configuración
Para comenzar, agregue la dependencia a su archivo build.gradle.kts (si usa Gradle):
// Para un proyecto JVMimplementation("com.google.zxing:core:3.5.3")implementation("com.google.zxing:javase:3.5.3")
// Para un proyecto Android (generalmente basta con core)implementation("com.google.zxing:core:3.5.3")Si trabaja con Maven, agregue las dependencias correspondientes en pom.xml.
Ejemplo básico: generación de un código QR simple
Vamos a crear una función simple que genere un código QR a partir de una cadena de texto y lo guarde como una imagen 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("Código QR guardado exitosamente en: $filePath")}
fun main() { generateQRCode("https://pythonlib.ru", "qrcode_pythonlib.png")}Explicación del código:
QRCodeWriter()— crea una instancia del writer para códigos QR.encode()— codifica la cadena en una matriz de bits (imagen en blanco y negro).MatrixToImageWriter.writeToPath()— método conveniente para guardar la matriz en un archivo.
Configuración de color y tamaño
Por defecto, el código QR es en blanco y negro. Puede cambiar sus colores usando MatrixToImageConfig. Aquí hay un ejemplo con un código verde sobre fondo blanco:
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) // Guardamos BufferedImage en un archivo val outputFile = java.io.File(filePath) javax.imageio.ImageIO.write(bufferedImage, "PNG", outputFile) println("Código QR de color guardado en: $filePath")}
fun main() { generateColoredQRCode("Hello, Kotlin!", "colored_qr.png", foregroundColor = Color(0x00AA00), También en la biblioteca
Procesamiento de imágenes en Node.js: bibliotecas Sharp, Jimp y gm
FastEndpoints C# (.NET): guía completa con ejemplos prácticos
Guzzle para PHP: guía completa con ejemplos
Generación de PDF en JavaScript: biblioteca PDFKit
Configuración de aplicaciones Java: bibliotecas y herramientas para la gestión de ajustes