Generador de códigos QR en Java: biblioteca ZXing (Zebra Crossing)

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

Generación de códigos QR en Java con ZXing (Zebra Crossing)

\n\n

Los códigos QR se han convertido en una parte esencial de la web moderna y las aplicaciones móviles. Permiten transferir rápidamente enlaces, datos de contacto, información textual y mucho más. En el mundo de Java, una de las bibliotecas más populares y estables para trabajar con códigos QR es ZXing (Zebra Crossing).

\n\n

En este artículo, analizaremos en detalle cómo conectar ZXing a su proyecto, crear un código QR simple, personalizar su apariencia y guardarlo en un archivo. El material será útil tanto para principiantes como para desarrolladores experimentados que deseen agregar funcionalidad de generación de códigos QR a sus aplicaciones Java.

\n\n

¿Qué es ZXing?

\n\n

ZXing (se pronuncia como "zebra crossing") es una biblioteca de código abierto para procesar códigos de barras unidimensionales y bidimensionales. Está escrita en Java y admite múltiples formatos: código QR, Data Matrix, Aztec, PDF417 y otros. Las principales capacidades son:

\n\n
    \n
  • Generación (creación) de códigos QR a partir de texto, URL, contactos, etc.
  • \n
  • Lectura (decodificación) de códigos QR desde imágenes.
  • \n
  • Personalización de color, tamaño y nivel de corrección de errores.
  • \n
  • Salida en varios formatos gráficos (PNG, JPEG, SVG).
  • \n
  • Soporte para Java SE, Android, así como otros lenguajes JVM (Kotlin, Scala).
  • \n
\n\n

La biblioteca es mantenida activamente por la comunidad y se utiliza en miles de proyectos en todo el mundo.

\n\n

Conexión de ZXing al proyecto

\n\n

La forma más sencilla de agregar ZXing a su proyecto es usar el sistema de compilación Maven o Gradle. Si usa Maven, agregue la siguiente dependencia al archivo pom.xml:

\n\n
<dependency>\n    <groupId>com.google.zxing</groupId>\n    <artifactId>core</artifactId>\n    <version>3.5.3</version>\n</dependency>\n<dependency>\n    <groupId>com.google.zxing</groupId>\n    <artifactId>javase</artifactId>\n    <version>3.5.3</version>\n</dependency>\n
\n\n

Para Gradle (build.gradle):

\n\n
implementation 'com.google.zxing:core:3.5.3'\nimplementation 'com.google.zxing:javase:3.5.3'\n
\n\n

El módulo core contiene las clases principales para trabajar con códigos, y javase contiene utilidades auxiliares para Java SE (por ejemplo, para trabajar con imágenes).

\n\n

Creación de un código QR simple

\n\n

Veamos un ejemplo básico: generación de un código QR que contiene la cadena de texto "Hello, PythonLib!".

\n\n
import com.google.zxing.BarcodeFormat;\nimport com.google.zxing.WriterException;\nimport com.google.zxing.common.BitMatrix;\nimport com.google.zxing.qrcode.QRCodeWriter;\n\nimport javax.imageio.ImageIO;\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.IOException;\n\npublic class QRCodeGenerator {\n    public static void main(String[] args) {\n        String text = "Hello, PythonLib!";\n        int width = 300;\n        int height = 300;\n\n        QRCodeWriter qrCodeWriter = new QRCodeWriter();\n        try {\n            BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);\n\n            BufferedImage qrImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);\n            for (int x = 0; x < width; x++) {\n                for (int y = 0; y < height; y++) {\n                    qrImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);\n                }\n            }\n\n            File outputFile = new File("qrcode.png");\n            ImageIO.write(qrImage, "png", outputFile);\n            System.out.println("Código QR guardado en el archivo: " + outputFile.getAbsolutePath());\n\n        } catch (WriterException | IOException e) {\n            e.printStackTrace();\n        }\n    }\n}\n
\n\n

Este código crea un código QR en blanco y negro de 300x300 píxeles y lo guarda en el archivo qrcode.png.

\n\n

Con

Recommendations