SpringBoot 二维码生成
一、基于Google开发工具包ZXing生成二维码
1、引入需要的依赖
<!-- 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.效果显示
二、基于开源的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调用测试:
古今成大事者,不唯有超世之才,必有坚韧不拔之志!