Creación de códigos QR.
En este post les mostrare como crear códigos QR, con una librería
gratuita zxing-1.6, la documentación de esta librería está en internet dado que
es “open source “ y esta trae dos métodos:
-crear código QR y
-Leer el código QR,
En este post solo veremos la creación de los códigos
QR.
Nota: Lo que he realizado es solo adaptar o modificar los
métodos proporcionados por la librería para crear una aplicación más
interactiva.
Métodos para crear código QR:
/**
*
* @param
informacion es elcontenido que llevara el codigo QR, que se estrae de la caja
de texto
* @param ruta es
la ruta donde vamos a guardar el archivo
* @throws WriterException
* @throws IOException
*/
public void crearCodigoQR(String
informacion, String ruta) throws WriterException, IOException {
FileOutputStream qrCode = null;
try {
BitMatrix bm;
Writer writer = new QRCodeWriter();
bm = writer.encode(informacion,
BarcodeFormat.QR_CODE, ancho, alto);
BufferedImage image = new
BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y <
ancho; y++) {
for (int x = 0; x < alto; x++) {
int grayValue = (bm.get(x,
y) ? 1 : 0) & 0xff;
image.setRGB(x, y,
(grayValue == 0 ? 0 :
0xFFFFFF));
}
}
image = invertirColores(image);
qrCode = new FileOutputStream(rutaQR
+ "." + FORMATO_IMAGEN);
ImageIO.write(image, FORMATO_IMAGEN, qrCode);
qrCode.close();
// ESTO ES
PARA ABRIR EL CODIGO QR, CON EL VISOR DE IMAGENS despues de averce creado :D
// Tiene como
parametro la ruta del archivo QR
//Desktop d =
Desktop.getDesktop();
//d.open(new
File("Aqui va la ruta del QR"));
} catch (FileNotFoundException ex) {
Logger.getLogger(CodigoQRZinx.class.getName()).log(Level.SEVERE, null,
ex);
} finally {
try {
qrCode.close();
} catch (IOException ex) {
Logger.getLogger(CodigoQRZinx.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}
/**
* Este metodo se
utiliza el el metodo crearCodigoQR("","")
* Mas informacion
de esta libreria puede buscarla en internet o en el link que esta en este post
* @param imagen
* @return
*/
private static BufferedImage
invertirColores(BufferedImage imagen) {
for (int x = 0; x < ancho; x++) {
for (int y = 0; y < alto;
y++) {
int rgb = imagen.getRGB(x, y);
if (rgb == -16777216) {
imagen.setRGB(x, y,
-1);
} else
{
imagen.setRGB(x, y, -16777216);
}
}
}
return imagen;
}