65.9K
CodeProject 正在变化。 阅读更多。
Home

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

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2024 年 8 月 24 日

CPOL

2分钟阅读

viewsIcon

2115

downloadIcon

55

本文档介绍了使用 ZXing 库生成和读取二维码的方法。

引言

二维码,也称为快速响应码,已成为许多领域的标准。目前二维码最常见的用途是使在线购物更加便捷。ZXing 或 “Zebra Crossing”(斑马线)库可用于轻松处理二维码。

背景

我希望保持文章简短而有趣,以便读者专注于应用程序的必要方面,而不会陷入不必要的细节。

我创建了一个基于控制台的 Java Maven 项目,包含以下三个选项:

  1. 生成二维码
  2. 查看二维码
  3. 从二维码中提取信息

使用代码

以下代码用于在 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 库的 QRCodeWriterBitMatrixMatrixToImageWriter 类生成二维码。

以下代码可用于从用户交互式输入的文本生成二维码

        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 库的 LuminanceSourceBinaryBitmapResult 类以及 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. 退出
--------------------------------------------------
输入一个选项
--------------------------------------------------

关注点

本文相对简短,但我希望用户觉得它既有趣又有信息量。

© . All rights reserved.