Generación de códigos QR en Java: biblioteca ZXing (guía detallada)

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

Los códigos QR se han convertido en una parte esencial de la web moderna y las aplicaciones móviles. Se utilizan para la transmisión rápida de enlaces, datos de contacto, texto y otra información. En Java, una de las bibliotecas más populares y estables para trabajar con códigos QR es ZXing («Zebra Crossing»). En este artículo, veremos cómo agregar ZXing a un proyecto, generar un código QR y guardarlo en un archivo.



¿Qué es ZXing?

ZXing (Zebra Crossing) es una biblioteca de código abierto para el procesamiento de códigos de barras unidimensionales y bidimensionales, escrita en Java. Admite la lectura y escritura de códigos QR, Data Matrix, PDF417 y muchos otros formatos. La biblioteca es mantenida activamente por la comunidad y se utiliza en miles de proyectos.



Inclusión de la biblioteca

Para trabajar con ZXing en un proyecto Java (por ejemplo, Maven o Gradle), es necesario agregar dos dependencias principales:

  • core — contiene las clases básicas para trabajar con códigos.
  • javase — contiene clases para generar imágenes (PNG, JPEG) y trabajar con AWT.


Ejemplo para Maven (pom.xml):

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


Para Gradle, agregue en build.gradle:

implementation 'com.google.zxing:core:3.5.3'implementation 'com.google.zxing:javase:3.5.3'


Ejemplo básico: generación de código QR

Creemos un método simple que reciba texto y la ruta del archivo, y luego genere un código QR de 300x300 píxeles.



import com.google.zxing.BarcodeFormat;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;

import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.Path;

public class QRCodeGenerator {

public static void generateQRCode(String text, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 300, 300);

Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); }

public static void main(String[] args) { try { generateQRCode("https://pythonlib.ru", "qrcode.png"); System.out.println("¡Código QR creado exitosamente!"); } catch (WriterException | IOException e) { System.err.println("Error al generar el código QR: " + e.getMessage()); } }}


Después de la ejecución, en la raíz del proyecto aparecerá un archivo qrcode.png con un código QR que contiene el enlace a https://pythonlib.ru.



Configuración de color y tamaño

Por defecto, el código QR se genera en blanco y negro. Puede cambiar el color del primer plano y del fondo usando MatrixToImageConfig:



import com.google.zxing.client.j2se.MatrixToImageConfig;

public static void generateColoredQR(String text, String filePath) throws WriterException, IOException { QRCodeWriter writer = new QRCodeWriter(); BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, 400, 400);

// Color del primer plano (azul), color de fondo (amarillo) int foregroundColor = 0xFF3366FF; // ARGB int backgroundColor = 0xFFFFFF00; MatrixToImageConfig config = new MatrixToImageConfig(foregroundColor, backgroundColor);

Path path = FileSystems.getDefault().get

Recommendations