Cómo generar y leer código QR con Java usando ZXing Library

QRCode se abrevia como Quic Response Code y estamos bastante familiarizados con QRCodes hoy en día. Se utiliza para pagos en línea autenticados y rápidos. Un código QR utiliza cuatro modos de codificación estandarizados (numérico, alfanumérico, byte/binario y kanji) para almacenar datos de manera eficiente; También se pueden utilizar extensiones.
Un QRCode es una disposición de cuadrados en blanco y negro y se puede leer con varios escáneres de QRCode y es conveniente hoy en día porque cada teléfono inteligente tiene una aplicación de escáner de QRcode.
 

Biblioteca utilizada para generar QRCodes (ZXing)

ZXing («Zebra Crossing») es la popular API para el procesamiento de códigos QR en Java. Su biblioteca tiene múltiples componentes y usaremos el ‘núcleo’ para la creación de códigos QR en nuestro ejemplo de Java. 
 

¿Cómo generar código QR?

El siguiente código es un ejemplo para crear una imagen de código QR.

  1. Descargue la biblioteca ZXING desde aquí
  2. Agregue la dependencia ZXING en el archivo maven .

XML

<dependencies>
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.0</version>
    </dependency>
</dependencies>   
  1. Escriba el código para generar un código QR y guárdelo como un archivo jpg en la carpeta nativa.
     

Java

// Java code to generate QR code
 
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 
public class MyQr {
 
    // Function to create the QR code
    public static void createQR(String data, String path,
                                String charset, Map hashMap,
                                int height, int width)
        throws WriterException, IOException
    {
 
        BitMatrix matrix = new MultiFormatWriter().encode(
            new String(data.getBytes(charset), charset),
            BarcodeFormat.QR_CODE, width, height);
 
        MatrixToImageWriter.writeToFile(
            matrix,
            path.substring(path.lastIndexOf('.') + 1),
            new File(path));
    }
   
    // Driver code
    public static void main(String[] args)
        throws WriterException, IOException,
               NotFoundException
    {
 
        // The data that the QR code will contain
        String data = "www.geeksforgeeks.org";
 
        // The path where the image will get saved
        String path = "demo.png";
 
        // Encoding charset
        String charset = "UTF-8";
 
        Map<EncodeHintType, ErrorCorrectionLevel> hashMap
            = new HashMap<EncodeHintType,
                          ErrorCorrectionLevel>();
 
        hashMap.put(EncodeHintType.ERROR_CORRECTION,
                    ErrorCorrectionLevel.L);
 
        // Create the QR code and save
        // in the specified folder
        // as a jpg file
        createQR(data, path, charset, hashMap, 200, 200);
        System.out.println("QR Code Generated!!! ");
    }
}

El archivo de salida será por nombre demo.jpg
 

Al escanear este código QR, será redirigido a la página de inicio de geeksforgeeks
 

¿Cómo generar código QR?

Después de generar el código QR, también podemos leer el archivo de imagen del código QR usando la biblioteca ZXing . A continuación se muestra el código para hacerlo.

Java

// Java code to read the QR code
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 
public class QRCode {
 
     
    // Function to read the QR file
    public static String readQR(String path, String charset,
                                Map hashMap)
        throws FileNotFoundException, IOException,
               NotFoundException
    {
        BinaryBitmap binaryBitmap
            = new BinaryBitmap(new HybridBinarizer(
                new BufferedImageLuminanceSource(
                    ImageIO.read(
                        new FileInputStream(path)))));
 
        Result result
            = new MultiFormatReader().decode(binaryBitmap);
 
        return result.getText();
    }
   
    // Driver code
    public static void main(String[] args)
        throws WriterException, IOException,
               NotFoundException
    {
 
        // Path where the QR code is saved
        String path = "F:\user\QRCodes";
 
        // Encoding charset
        String charset = "UTF-8";
 
        Map<EncodeHintType, ErrorCorrectionLevel> hashMap
            = new HashMap<EncodeHintType,
                          ErrorCorrectionLevel>();
 
        hintMap.put(EncodeHintType.ERROR_CORRECTION,
                    ErrorCorrectionLevel.L);
 
        System.out.println(
            "QRCode output: "
            + readQRCode(filePath, charset, hintMap));
    }
 
}

Producción: 

QRCode output: www.geeksforgeeks.org

Publicación traducida automáticamente

Artículo escrito por RahulSabharwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *