一、新建Springboot项目
二、引入pom.xml,以下为生成二维码所需依赖
<!--生成二维码-->
<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>
三、创建CodeController类
package cn.sdtedu.live.controller;
import cn.sdtedu.live.common.OssUtil;
import cn.sdtedu.live.common.OutputObject;
import cn.sdtedu.live.common.ReturnCode;
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* @Author: zhushaojie
* @Date: 2020/6/8 19:16
*/
@RestController
@RequestMapping("/file")
public class CodeController {
// 自定义播放路径(用于生成二维码字符串题头)
private static final String QR_CODE_PATH = "http://player.sdtedu.cn/login.html?course=";
// 用户存储在linux下发布的web端下的目录文件
private static final String QR_CODE_IMAGE_PATH = "/web/train/img";
/**
* 生成二维码
* @param code 代表传的id
* @return
* @throws WriterException
* @throws IOException
*/
@RequestMapping("code")
public OutputObject QRCode(@RequestParam String code) throws WriterException, IOException {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
String codes = QR_CODE_PATH + code;
String codePath = QR_CODE_IMAGE_PATH+"/"+code+".png";
BitMatrix bitMatrix = qrCodeWriter.encode(codes, BarcodeFormat.QR_CODE, 300, 300);
Path path = FileSystems.getDefault().getPath(codePath);
MatrixToImageWriter.writeToPath(bitMatrix,"PNG", path);
// 拼接可访问链接
String pathUrl ="http://train.sdtedu.cn/img/"+code+".png";
// 返回生成的二维码链接
return new OutputObject(ReturnCode.SUCCESS,"二维码生成成功",pathUrl);
}
}
四、测试,传入一个json格式code=id即可返回生成可访问的二维码图片链接,如有疑问,请下方留言,或者私信我。