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(); } } }
演示