Java - Créer et lire des QR Codes avec ZXing

Dépendances Maven ZXing

<dependencies>
	<dependency>
		<groupId>com.google.zxing</groupId>
		<artifactId>core</artifactId>
		<version>3.4.1</version>
	</dependency>
	<dependency>
		<groupId>com.google.zxing</groupId>
		<artifactId>javase</artifactId>
		<version>3.4.1</version>
	</dependency>
</dependencies>
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
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 MainQRCode {

  public static void main(String args[]) throws WriterException, IOException, NotFoundException {
    // Les données à stocker dans le QR code
    String data = "https://www.wikipedia.org/";

    // Chemin où stocker l'image du QRCode
    Path path = Paths.get("qrcode.png");

    // QR code avec un faible niveau de correction d'erreur
    Map < EncodeHintType, ErrorCorrectionLevel > encodeHintMap = new HashMap < EncodeHintType, ErrorCorrectionLevel > ();
    encodeHintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

    // Génération du QRCode 200x200 .png
    BitMatrix matrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, 200, 200);
    MatrixToImageWriter.writeToPath(matrix, "png", path);

    /* Lecture du QRCode */

    // L'image du QRCode
    BufferedImage qrCodeBufferedImage = ImageIO.read(path.toFile());

    // Préparation de l'image du QRCode
    BinaryBitmap binaryBitmap = new BinaryBitmap(
      new HybridBinarizer(new BufferedImageLuminanceSource(qrCodeBufferedImage)));

    // Décodage du QRCode
    Result result = new MultiFormatReader().decode(binaryBitmap);

    System.out.println("Le QR Code contient : " + result.getText());
  }

}

Commentaires