Crear códigos QR con Java

Vamos hacer un pequeño sistema que nos permite generar códigos QR. Lo vamos a desarrollar con Java y NetBeans. Lo primero que vamos hacer es descargar la librería zxing-core-2.0.jar

Ahora vamos a crear un nuevo proyecto llamado QRTest para iniciar a escribir nuestro código. Cuando tenemos el proyecto listo lo que tenemos que hacer es agregar la librería zxing-core-2.0.jar para poder generar los códigos QR.

Ahora debemos importar las siguientes librerías en la clase donde vamos a generar nuestros códigos QR.

import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;


Vamos a dar un vistazo al código.

public static void main(String[] args) {
try {
String content = "http://www.google.com";
String filePath = "";
String fileType = "png";
int size = 125;
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
QRCodeWriter qrcode = new QRCodeWriter();
BitMatrix matrix = qrcode.encode(content, BarcodeFormat.QR_CODE, size, size);
File qrFile = new File(filePath + randomUUIDString + "." + fileType);
int matrixWidth = matrix.getWidth();
BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB);
image.createGraphics();

Graphics2D graphics = (Graphics2D) image.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, matrixWidth, matrixWidth);
graphics.setColor(Color.BLACK);

for (int b = 0; b < matrixWidth; b++) {
for (int j = 0; j < matrixWidth; j++) {
if (matrix.get(b, j)) {
graphics.fillRect(b, j, 1, 1);
}
}
}
ImageIO.write(image, fileType, qrFile);
} catch (WriterException ex) {
Logger.getLogger(QRTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(QRTest.class.getName()).log(Level.SEVERE, null, ex);
}
}

Primero vamos a tener la content la cual será el contenido de la imagen de nuestro código QR. Luego la variable filePath donde vamos a guardar la imagen, en este momento no le vamos a dar ninguna dirección para guardarla donde se ejecute nuestro sistema. La variable fileType es el formato de nuestra variable y en nuestro caso la vamos almacenar de tipo png. La que sigue es size con la que vamos a definir el tamaño de la imagen.

Ahora vamos a crear la variable uuid con la que vamos a crear el nombre de la imagen que será un texto generado para que cada una tenga un nombre distinto.

Debemos crear una variable de tipo BitMatrix que va a representar nuestra imagen en bits hasta que sea almacenada. El nombre de la variable es matrix. Esta variable requiere de un objeto que vamos a generar a partir de un objeto QRCodeWriter que nos va permitir crear nuestro código QR.

Ahora vamos a ver la variable image que es un BufferedImage donde vamos a contener nuestra imagen en memoria para que después la podamos escribir en disco duro.

Usando un objeto de tipo Graphics2D vamos a poder generar la imagen como tal para poder ser escrita en disco duro. Le damos un tamaño, un fondo, etc y ya la imagen esta lista para ser escrita.

Finalmente usando la clase ImageIO vamos a escribir la imagen. La imagen esta contenida en el objeto image, el tipo de imagen esta en la variable fileType y la dirección está en la variable qrFile.

 El resultado la imagen que deseamos generar con nuestro contenido. 

¿Quieres aprender java y C#?


Related Posts

2 thoughts on “Crear códigos QR con Java

Leave a Reply

Your email address will not be published.