Java二维码生成:ZXing库(详细指南)

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

使用ZXing在Java中生成二维码

二维码已成为现代网络和移动应用程序不可或缺的一部分。它们用于快速传输链接、联系信息、文本和其他数据。在Java中,最流行且稳定的二维码处理库之一是ZXing(“Zebra Crossing”)。在本文中,我们将介绍如何将ZXing集成到项目中、生成二维码并将其保存到文件。



什么是ZXing?

ZXing(Zebra Crossing)是一个用Java编写的开源库,用于处理一维和二维条码。它支持读取和写入二维码、Data Matrix、PDF417以及许多其他格式。该库得到社区的积极维护,并用于数千个项目。



集成库

要在Java项目(例如Maven或Gradle)中使用ZXing,需要添加两个主要依赖项:

  • core — 包含用于处理条码的基础类。
  • javase — 包含用于生成图像(PNG、JPEG)和与AWT配合使用的类。


Maven示例(pom.xml):

<dependency>    <groupId>com.google.zxing</groupId>    <artifactId>core</artifactId>    <version>3.5.3</version></dependency><dependency>    <groupId>com.google.zxing</groupId>    <artifactId>javase</artifactId>    <version>3.5.3</version></dependency>


对于Gradle,添加到build.gradle:

implementation 'com.google.zxing:core:3.5.3'implementation 'com.google.zxing:javase:3.5.3'


基本示例:生成二维码

让我们创建一个简单的方法,它接受文本和文件路径,然后生成一个300x300像素的二维码。



import com.google.zxing.BarcodeFormat;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.QRCodeWriter;

import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.Path;

public class QRCodeGenerator {

public static void generateQRCode(String text, String filePath) throws WriterException, IOException { QRCodeWriter qrCodeWriter = new QRCodeWriter(); BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 300, 300);

Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); }

public static void main(String[] args) { try { generateQRCode("https://pythonlib.ru", "qrcode.png"); System.out.println("二维码创建成功!"); } catch (WriterException | IOException e) { System.err.println("生成二维码时出错:" + e.getMessage()); } }}


运行后,项目根目录下将出现一个名为qrcode.png的文件,其中包含指向https://pythonlib.ru的二维码。



颜色和大小设置

默认情况下,二维码以黑白方式生成。您可以使用MatrixToImageConfig更改前景色和背景色:



import com.google.zxing.client.j2se.MatrixToImageConfig;

public static void generateColoredQR(String text, String filePath) throws WriterException, IOException { QRCodeWriter writer = new QRCodeWriter(); BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, 400, 400);

// 前景色(蓝色),背景色(黄色) int foregroundColor = 0xFF3366FF; // ARGB int backgroundColor = 0xFFFFFF00; MatrixToImageConfig config = new MatrixToImageConfig(foregroundColor, backgroundColor);

Path path = FileSystems.getDefault().get

推荐