[Métodos] Generar código de barras y Códigos QR - Generación de códigos QR con ZXing


Generar código de barras y Códigos QR - Generación de códigos QR con ZXing



Los códigos QR o Quick Response Code son simple códigos de barras pero en 2 dimensiones que pueden ser leidos o escaneados por una cámara, como la de un teléfono móvil.

Un código QR consiste en cuadrados negros dispuestos en una cuadrícula cuadrada sobre un fondo blanco. Existen varias variantes de códigos QR que dependen del tamaño de los símbolos, el diseño, la codificación y la estructura.

Zxing es una librería para java y android que se pronuncia "Zebra Crossing" como el cruce peatonal de Abbey Road

Procedimiento:

Hay que agregar las dependencias de zxing-core y zxing-javase a nuestro propio proyeto

Con maven

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

Con gradel

 compile "com.google.zxing:core:3.4.0"
 compile 'com.google.zxing:javase:3.4.0'
 

Manualmente añadir los jar al classpath descargandolos desde maven central


El siguiente paso es poner manos al código:

  • Crear una instancia de com.google.zxing.qrcode.QRCodeWriter
  • Obtener un BitMatrix a través de encodear con el objeto QRCodeWriter, pasando el texto, el tipo de codigo y un alto y ancho
  • Por último escribir en un archivo el bitmatrix a través de método MatrixToImageWriter.writeToPath definiendo la extensión de la imagen y el path.
 private static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException {
  QRCodeWriter qrCodeWriter = new QRCodeWriter();
  BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);

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

Asegurarse de que el directorio del parametro filePath exista, porque no lo crea y lanza una excepción.

Ejecutando en un main normal de toda la vida, obtendremos:

public static void main(String[] args) throws Exception {
    generateQRCodeImage("Hola juli =)", 350, 350, "D:/dev/qrcodes/holajuli.png");
}

Resultado

No hay comentarios:

Publicar un comentario