Generador de códigos QR en Kotlin: creación y configuración de códigos QR

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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),

Recommendations