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 También en la biblioteca
Aprendizaje automático en C# (.NET): revisión de las bibliotecas ML.NET, Accord.NET, TensorFlow.NET
Trabajo con imágenes en Rust: revisión de las bibliotecas image, fast_image_resize y otras
Serialización de objetos en Java: guía completa con ejemplos
Colas de tareas en Swift: GCD, OperationQueue y Swift Concurrency
cron para Go: guía completa con ejemplos prácticos