当前位置:首页 > Java

java如何生成二维码

2026-02-05 00:31:56Java

生成二维码的方法

在Java中生成二维码可以通过多种库实现,以下是几种常见的方法:

使用ZXing库

ZXing(Zebra Crossing)是一个开源的二维码处理库,支持生成和解析二维码。

  1. 添加ZXing依赖到项目中(Maven):

    <dependency>
     <groupId>com.google.zxing</groupId>
     <artifactId>core</artifactId>
     <version>3.4.1</version>
    </dependency>
    <dependency>
     <groupId>com.google.zxing</groupId>
     <artifactId>javase</artifactId>
     <version>3.4.1</version>
    </dependency>
  2. 生成二维码代码示例:

    java如何生成二维码

    
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.MultiFormatWriter;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;

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

public class QRCodeGenerator { public static void generateQRCode(String text, int width, int height, String filePath) throws Exception { BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height); Path path = FileSystems.getDefault().getPath(filePath); MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path); }

public static void main(String[] args) {
    try {
        generateQRCode("https://example.com", 200, 200, "qrcode.png");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

java如何生成二维码


使用QRGen库

QRGen是基于ZXing的简化库,提供了更简洁的API。

1. 添加QRGen依赖:
```xml
<dependency>
    <groupId>io.github.g0dkar</groupId>
    <artifactId>qrcode-kotlin-jvm</artifactId>
    <version>3.3.0</version>
</dependency>
  1. 生成二维码代码示例:
    
    import io.github.g0dkar.qrcode.QRCode;

import java.io.FileOutputStream;

public class QRGenExample { public static void main(String[] args) throws Exception { new QRCode("https://example.com") .render() .writeToFile(new FileOutputStream("qrcode.png")); } }


生成二维码到内存

如果需要将二维码直接生成到内存而不是保存为文件:

```java
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

import java.io.ByteArrayOutputStream;

public class QRCodeInMemory {
    public static byte[] generateQRCodeBytes(String text, int width, int height) throws Exception {
        BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
        return outputStream.toByteArray();
    }
}

自定义二维码样式

可以通过修改ZXing的输出参数来自定义二维码样式:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;

import java.util.HashMap;
import java.util.Map;

public class CustomQRCode {
    public static void generateCustomQRCode() throws Exception {
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.MARGIN, 2); // 设置边距
        hints.put(EncodeHintType.ERROR_CORRECTION, "L"); // 设置纠错级别

        BitMatrix bitMatrix = new MultiFormatWriter().encode(
            "https://example.com",
            BarcodeFormat.QR_CODE,
            300,
            300,
            hints
        );

        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", Path.of("custom_qrcode.png"));
    }
}

以上方法提供了在Java中生成二维码的不同实现方式,可以根据项目需求选择合适的库和方法。ZXing是最常用的选择,提供了最大的灵活性;QRGen则提供了更简洁的API。

标签: 二维码java
分享给朋友:

相关文章

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…