Java 二维码生成器
时间:2020-02-23 14:36:46 来源:igfitidea点击:
今天,我们将研究Java QR代码生成器程序。
如果您精通技术和小工具,则必须知道QR码。
这些天,到处都可以找到它-在教程 ,,甚至在某些公共场所。
这在移动应用程序中非常流行,您可以其中使用QR Code扫描仪应用程序扫描QR Code,它会显示文本或者将您重定向到网页(如果是URL)。
我最近遇到了这个,发现它非常有趣。
如果您想了解QR Code,可以在Wikipedia QR Code页面上找到很多有用的信息。
Java QR代码生成器
当我在许多上找到QR码图像时,我开始寻找Java QR码生成器。
我研究了一些开源API,发现zxing是最简单,最易于使用的。
如果您想生成QR码图像,那么我们只需要其核心库。
只需将以下依赖项添加到您的Maven项目即可。
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.2</version> </dependency>
如果您想通过命令行读取QR图片,则需要使用它的JavaSE库。
您可以为其添加以下依赖项。
<dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.3.2</version> </dependency>
这还将使您知道从命令行运行所需的两个另外的依赖关系,如下图所示。
我们将必须将这些jar添加到classpath中,以运行客户端应用程序以读取QR码图像。
我们将在本教程后面的部分中看到这一点。
zxing示例生成QR码图像
这是您可以用来通过zxing API创建QR Code图片的程序。
GenerateQRCode.java
package com.theitroad.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.theitroad.local"; 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); } }
这是此程序创建的QR Code图像文件。
您可以使用移动QR码扫描仪应用程序对其进行测试。
它应该指向theitroad主页URL。
zxing示例读取QR码
如果您没有要测试的移动应用,请不要担心。
您可以通过命令行使用zxing API读取QR码。
以下是读取QR码图像文件的命令。
请注意zxing依赖的类路径中的其他jar。
$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