用java生成二维码

用的spring boot项目做的案例

pom文件

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.zxing/core
            用的google的API,生成二维码
         -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.0</version>
        </dependency>

控制层代码

 

 

package com.qr.controller;


import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageConfig;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Hashtable;

@Controller
public class QrController {

    //返回的html网页
    @RequestMapping("/index")
    public String index(){
        return "index";
    }

    //获取二维码的地址,如有需要还可以加个参数,自定义生成二维码的内容
    @RequestMapping("/qr")
    public  void qr(HttpServletResponse response){

        try {
            qrCode(response.getOutputStream(),"这是一个二维码",200);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    //生成二维码的方法
    public static void qrCode(OutputStream stream, String text, int size){
        try {
            BitMatrix matrix = cteateBitMatrix(text, size);
            MatrixToImageConfig config = new MatrixToImageConfig(0xFF000000, 0xFFFFFFFF);
            MatrixToImageWriter.writeToStream(matrix, "png", stream, config);
        } catch (WriterException | IOException e) {

        }
    }
    private static BitMatrix cteateBitMatrix(String text, int size) throws WriterException {
        Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 内容所使用编码
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 指定纠错等级
        hints.put(EncodeHintType.MARGIN, 0); // 白边大小,取值范围0~4
        BitMatrix matrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, size, size, hints);
        return matrix;
    }




}

 

 

 

HTML内容,及项目结构