在 Java 应用程序中使用 ZXing 库生成和读取二维码。





0/5 (0投票)
本文档介绍了使用 ZXing 库生成和读取二维码的方法。
引言
二维码,也称为快速响应码,已成为许多领域的标准。目前二维码最常见的用途是使在线购物更加便捷。ZXing 或 “Zebra Crossing”(斑马线)库可用于轻松处理二维码。
背景
我希望保持文章简短而有趣,以便读者专注于应用程序的必要方面,而不会陷入不必要的细节。
我创建了一个基于控制台的 Java Maven 项目,包含以下三个选项:
- 生成二维码
- 查看二维码
- 从二维码中提取信息
使用代码
以下代码用于在 pom.xml 中添加 ZXing 库的 Maven 依赖项。
<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>
Java 代码生成二维码非常简短且易于理解。它使用流类接收字符串输入,并使用 ZXing 库的 QRCodeWriter、BitMatrix 和 MatrixToImageWriter 类生成二维码。
以下代码可用于从用户交互式输入的文本生成二维码
try
{
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
System.out.println("Enter some text and terminate with blank line...");
String text=new String();
String line = br.readLine();
while(line.trim().length() != 0)
{
text += line + "\n";
line = br.readLine();
}
System.out.println(text);
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, 200, 200);
Path path = Paths.get("5387296/sample.png");
MatrixToImageWriter.writeToPath(matrix, "png", path);
System.out.println("QR Code generated in " + path + ".");
}
catch(IOException ex)
{
System.out.println("I/O Error: " + ex.getMessage());
}
catch(WriterException ex)
{
System.out.println("Writer Error: " + ex.getMessage());
}
以上代码生成了以下二维码。
以下代码可用于读取并提取保存在 PNG 图像中的二维码文本,使用 ZXing 库的 LuminanceSource、BinaryBitmap 和 Result 类以及 Reader 接口
try
{
BufferedImage image = ImageIO.read(new File("5387296/sample.png"));
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
Result result = reader.decode(bitmap);
System.out.println("The QR Code contains the following information: ");
System.out.println(result.getText());
}
catch(IOException ex)
{
System.out.println("I/O Error: " + ex.getMessage());
}
catch(NotFoundException ex)
{
System.out.println("Not Found Error: " + ex.getMessage());
}
catch(ChecksumException ex)
{
System.out.println("Checksum Error: " + ex.getMessage());
}
catch(FormatException ex)
{
System.out.println("Format Error: " + ex.getMessage());
}
以上代码显示以下文本
Code Project
真棒。
可以使用以下代码在默认图像查看器中查看生成的二维码
String commands[] = {"cmd","/c","start","c:/QRApp/sample.png"};
Runtime.getRuntime().exec(commands);
在运行程序时,将显示以下菜单,可以从中选择选项
--------------------------------------------------
选择一个选项
--------------------------------------------------
1. 生成二维码
2. 查看二维码
3. 从二维码中提取信息
4. 退出
--------------------------------------------------
输入一个选项
--------------------------------------------------
关注点
本文相对简短,但我希望用户觉得它既有趣又有信息量。