Java QR Code Generator
Heute werden wir uns das Java QR Code Generator Programm anschauen. Wenn du technik- und gadgetbegeistert bist, dann musst du den QR-Code kennen. Du findest ihn heutzutage überall – in Blogs, Websites und sogar an einigen öffentlichen Orten. Dies ist sehr beliebt bei mobilen Apps, wo du den QR-Code mit einer QR-Code-Scanner-App scannst und er dir den Text zeigt oder dich zur Webseite weiterleitet, wenn es eine URL ist. Ich bin kürzlich darauf gestoßen und fand es sehr interessant. Wenn du mehr über QR-Codes wissen möchtest, findest du viele nützliche Informationen auf der Wikipedia QR-Code-Seite.
Java QR Code Generator
Als ich QR-Code-Bilder auf so vielen Websites fand, begann ich nach einem Java QR Code Generator zu suchen. Ich habe mir einige Open-Source-APIs angesehen und fand zxing am einfachsten und besten zu verwenden. Wenn du ein QR-Code-Bild generieren möchtest, benötigen wir nur seine Kernbibliothek. Füge einfach die folgende Abhängigkeit zu deinem Maven-Projekt hinzu.
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.2</version>
</dependency>
Wenn du das QR-Bild über die Kommandozeile lesen möchtest, dann müssen wir seine JavaSE-Bibliothek verwenden. Du kannst die folgende Abhängigkeit dafür hinzufügen.
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.2</version>
</dependency>
Dies wird dir auch zwei zusätzliche Abhängigkeiten zeigen, die erforderlich sind, um es von der Kommandozeile aus zu betreiben. Wir müssen diese JARs in den Klassenpfad aufnehmen, um die Client-App auszuführen, die das QR-Code-Bild liest. Wir werden dies später in diesem Tutorial in Aktion sehen.
zxing-Beispiel zum Generieren eines QR-Code-Bildes
Hier ist das Programm, das du verwenden kannst, um mit der zxing-API ein QR-Code-Bild zu erstellen. GenerateQRCode.java
package com.journaldev.qrcode.generator;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
public class GenerateQRCode {
public static void main(String[] args) throws WriterException, IOException {
String qrCodeText = "https://www.journaldev.com";
String filePath = "JD.png";
int size = 125;
String fileType = "png";
File qrFile = new File(filePath);
createQRImage(qrFile, qrCodeText, size, fileType);
System.out.println("DONE");
}
private static void createQRImage(File qrFile, String qrCodeText, int size, String fileType)
throws WriterException, IOException {
// Create the ByteMatrix for the QR-Code that encodes the given String
Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText, BarcodeFormat.QR_CODE, size, size, hintMap);
// Make the BufferedImage that are to hold the QRCode
int matrixWidth = byteMatrix.getWidth();
BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB);
image.createGraphics();
Graphics2D graphics = (Graphics2D) image.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, matrixWidth, matrixWidth);
// Paint and save the image using the ByteMatrix
graphics.setColor(Color.BLACK);
for (int i = 0; i < matrixWidth; i++) {
for (int j = 0; j < matrixWidth; j++) {
if (byteMatrix.get(i, j)) {
graphics.fillRect(i, j, 1, 1);
}
}
}
ImageIO.write(image, fileType, qrFile);
}
}
zxing-Beispiel zum Lesen eines QR-Codes
Wenn du keine mobile App zum Testen hast, mach dir keine Sorgen. Du kannst einen QR-Code mit der zxing-API über die Kommandozeile lesen. Unten ist der Befehl, um die QR-Code-Bilddatei zu lesen. Beachte die zusätzlichen JARs im Klassenpfad, von denen zxing abhängt.
$java -cp $HOME/.m2/repository/com/google/zxing/javase/3.3.2/javase-3.3.2.jar:.:$HOME/.m2/repository/com/google/zxing/core/3.3.2/core-3.3.2.jar:$HOME/.m2/repository/com/beust/jcommander/1.72/jcommander-1.72.jar:$HOME/.m2/repository/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1.jar com.google.zxing.client.j2se.CommandLineRunner JD.png