SpringBoot 二维码生成

来源:https://www.cnblogs.com/songweipeng/p/16623793.html

一、基于Google开发工具包ZXing生成二维码

<!-- zxing生成二维码 -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>
 
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.3.3</version>
</dependency>

2.具体代码实现

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.Path;
import static java.nio.file.FileSystems.getDefault;

/**
 * @project 
 * @Description
 * @Author songwp
 * @Date 2022/8/25 11:07
 * @Version 1.0.0
 **/
public class QRCodeGenerator {

    /*
     * text - 内容
     * width - 二维码宽度
     * height - 二维码高度
     * filePath - 二维码存放位置
     */
    public static void generateQRCodeImage(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 = getDefault().getPath(filePath);
        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
    }

    /*
     * 测试方法
     * */
    public static void main(String[] args) {
        try {
            generateQRCodeImage("https://www.cnblogs.com/songweipeng'", 350, 350, "D:\\photo\\QRTest.png");
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.效果显示
SpringBoot 二维码生成_第1张图片
二、基于开源的Hutool工具生成二维码
1、引入需要的依赖

 <!--二维码开发工具集-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.10</version>
        </dependency>
 
 
        <!-- zxing生成二维码 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
        </dependency>
 
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.3</version>
        </dependency>

2.利用Bean的形式显示配置并注入QrConfig,如下代码所示:

import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.awt.*;

/**
 * @project 
 * @Description
 * @Author songwp
 * @Date 2022/8/25 11:21
 * @Version 1.0.0
 **/
@Configuration
public class QRCode {
    @Bean
    public QrConfig qrConfig(){
        QrConfig qrConfig=new QrConfig();
        qrConfig.setBackColor(Color.white.getRGB());
        qrConfig.setForeColor(Color.black.getRGB());
        return qrConfig;
    }
}

3.编写业务实现类

import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;

/**
 * @project 
 * @Description
 * @Author songwp
 * @Date 2022/8/25 11:22
 * @Version 1.0.0
 **/
@Service
public class QRService {
    @Resource
    private QrConfig qrconig;
    public void generateFile(String content, File file){
        //生成到本地文件
        QrCodeUtil.generate(content, qrconig, file);
    }
    //输出到流
    public void generateStream(String content, HttpServletResponse response) throws IOException {
        QrCodeUtil.generate(content,qrconig,"png",response.getOutputStream());
    }
}

4.编写QRController控制器类中进行调用,如下代码所示:

import com.songwp.service.impl.QRService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @project * @Description * @Author songwp * @Date 2022/8/24 16:11 * @Version 1.0.0 **/@RestController@RequestMapping("/user")public class UserController{   @Autowired   private QRService qrService;    @RequestMapping("/qrCode")    public void generateV3(String content, HttpServletResponse servletResponse) throws IOException {        qrService.generateStream(content,servletResponse);    }

5.postman调用测试:

SpringBoot 二维码生成_第2张图片

你可能感兴趣的:(#,springboot,spring,boot,java,后端)