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;
}
No hay comentarios:
Publicar un comentario