SpringBoot zxing 生成二维码图片
添加依赖#
<!--google二维码生成包--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.1</version> </dependency>
控制器#
package com.ybchen.controller; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.ybchen.dto.VideoOrderDto; import com.ybchen.service.VideoOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map; /** * @Description:视频-订单控制器 * @Author:chenyanbin * @Date:2021/3/12 下午5:08 * @Versiion:1.0 */ @RestController //@RequestMapping("/user/api/v1") @RequestMapping("/api/v1/order") public class OrderController { @Autowired private VideoOrderService videoOrderService; /** * 下单 * * @param videoId * @param request * @return */ @GetMapping("add") public void saveOrder( @RequestParam(value = "video_id", required = true) int videoId, HttpServletRequest request, HttpServletResponse response ) throws Exception { //获取用户ip // String ip = IpUtils.getIpAddr(request); String ip = "127.0.0.1"; //用户id // int userId = (Integer) request.getAttribute("user_id"); int userId = 1; VideoOrderDto videoOrderDto = new VideoOrderDto(); videoOrderDto.setUserId(userId); videoOrderDto.setVideoId(videoId); videoOrderDto.setIp(ip); String codeUrl = videoOrderService.save(videoOrderDto); System.out.println("codeUrl"); System.out.println(codeUrl); if (codeUrl == null) { throw new NullPointerException(); } try { //生成二维码 //参考链接:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5&index=3 Map<EncodeHintType, Object> hints = new HashMap<>(); //生成纠错等级 hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); //设置编码 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); //构造图片对象,第一个参数:二维码内容;第二个参数:二维码格式;第三个参数:宽;第四个参数:高;第五个参数:配置信息 BitMatrix bitMatrix = new MultiFormatWriter().encode( "chenyanbin", BarcodeFormat.QR_CODE, 400, 400, hints ); //拿到输出流 ServletOutputStream outputStream = response.getOutputStream(); MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream); } catch (Exception e) { e.printStackTrace(); } } }
演示#
分类:
JAVA
, Spring Boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2020-03-15 idea 调试快捷键
2020-03-15 Unable to start web server; nested exception is org.springframework.context.ApplicationContextException