当前位置:首页 > Java

java如何生成二维码

2026-03-03 11:44:25Java

生成二维码的基本方法

在Java中生成二维码可以通过第三方库实现,常用的库包括ZXing(Zebra Crossing)和QRGen。ZXing是一个功能强大的开源库,支持多种条形码和二维码的生成与解析。

使用ZXing库生成二维码

确保项目中已添加ZXing依赖。对于Maven项目,在pom.xml中添加以下依赖:

<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>

生成二维码的核心代码示例:

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, int width, int height, String filePath) throws WriterException, IOException {
        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
        Path path = FileSystems.getDefault().getPath(filePath);
        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
    }
}

使用QRGen简化操作

QRGen是基于ZXing的封装库,提供更简洁的API。添加QRGen依赖:

<dependency>
    <groupId>io.github.g0dkar</groupId>
    <artifactId>qrcode-kotlin-jvm</artifactId>
    <version>3.2.0</version>
</dependency>

生成二维码的简化代码:

import io.github.g0dkar.qrcode.QRCode;
import java.io.FileOutputStream;

public class SimpleQRGen {
    public static void createQR(String data, String outputPath) throws Exception {
        new QRCode(data).render().writeTo(new FileOutputStream(outputPath));
    }
}

自定义二维码样式

通过ZXing可以调整二维码的颜色、边距等属性。例如修改颜色和边距:

import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Map;

public class CustomQRCode {
    public static BufferedImage createCustomQR(String text, int size, int margin) throws WriterException {
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.MARGIN, margin);
        QRCodeWriter writer = new QRCodeWriter();
        BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, size, size, hints);
        return MatrixToImageWriter.toBufferedImage(matrix);
    }
}

生成二维码并嵌入Logo

在二维码中心嵌入Logo的示例:

java如何生成二维码

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

public class QRCodeWithLogo {
    public static void addLogo(BufferedImage qrImage, String logoPath, String outputPath) throws IOException {
        BufferedImage logo = ImageIO.read(new File(logoPath));
        Graphics2D g = qrImage.createGraphics();
        int x = (qrImage.getWidth() - logo.getWidth()) / 2;
        int y = (qrImage.getHeight() - logo.getHeight()) / 2;
        g.drawImage(logo, x, y, null);
        g.dispose();
        ImageIO.write(qrImage, "PNG", new File(outputPath));
    }
}

注意事项

  • 二维码尺寸不宜过小,建议至少200x200像素以保证可扫描性。
  • 纠错级别可通过EncodeHintType.ERROR_CORRECTION设置,可选L(7%)、M(15%)、Q(25%)、H(30%)。
  • 避免在二维码中存储敏感信息,因其可被任何人扫描。

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

相关文章

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一个…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何运行程序

java如何运行程序

运行Java程序的步骤 安装Java开发工具包(JDK) 确保系统已安装JDK,可通过命令行输入java -version和javac -version验证。若未安装,需从Oracle官网下载并配置环…

如何学习java语言

如何学习java语言

学习Java语言的系统方法 理解基础概念 Java是一种面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制流语句(if-else、循环)是第一步。熟悉类和对象的概念,理解封装、继承和多态三…

java js实现转盘抽奖

java js实现转盘抽奖

实现转盘抽奖的步骤 HTML结构 创建转盘抽奖的基本HTML结构,包括转盘区域和抽奖按钮。 <div id="wheel"> <canvas id="wheelCanv…

jquery生成二维码

jquery生成二维码

使用jQuery生成二维码的方法 引入必要的库 在HTML文件中引入jQuery和二维码生成库(如jquery.qrcode.js)。可以从CDN获取这些库: <script src="htt…