生成二维码
Posted 戴眼镜的蚂蚁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成二维码相关的知识,希望对你有一定的参考价值。
这是google的一个二维码工具
导入jar
方式一【gradle :"com.google.zxing:core:3.3.0" 】
方式二【maven:
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
】
方式三 下载链接: https://pan.baidu.com/s/1geG0HZP 密码: z7rq
使用的时候,定义一个方法即可:
1 package com.mall.core.utils; 2 3 import com.google.zxing.BarcodeFormat; 4 import com.google.zxing.EncodeHintType; 5 import com.google.zxing.MultiFormatWriter; 6 import com.google.zxing.WriterException; 7 import com.google.zxing.common.BitMatrix; 8 import org.apache.logging.log4j.LogManager; 9 import org.apache.logging.log4j.Logger; 10 11 import java.awt.image.BufferedImage; 12 import java.util.HashMap; 13 import java.util.Map; 14 15 /** 16 * Created by lier on 2017/5/12. 17 */ 18 public class QrCodeUtils { 19 20 private static final Logger logger = LogManager.getLogger(QrCodeUtils.class); 21 //二维码颜色 22 private static final int BLACK = 0xFF000000; 23 //二维码颜色 24 private static final int WHITE = 0xFFFFFFFF; 25 26 /** 27 * ZXing 方式生成二维码 28 * @param text 二维码内容 29 * @param width 二维码宽 30 * @param height 二维码高 31 * @return BufferedImage 32 */ 33 public static BufferedImage createQrcode(String text, int width, int height){ 34 BufferedImage image = null; 35 Map<EncodeHintType, String> his = new HashMap<>(); 36 //设置编码字符集 37 his.put(EncodeHintType.CHARACTER_SET, "utf-8"); 38 try { 39 //1、生成二维码 40 BitMatrix encode = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, his); 41 42 //2、获取二维码宽高 43 int codeWidth = encode.getWidth(); 44 int codeHeight = encode.getHeight(); 45 46 //3、将二维码放入缓冲流 47 image = new BufferedImage(codeWidth, codeHeight, BufferedImage.TYPE_INT_RGB); 48 for (int i = 0; i < codeWidth; i++) { 49 for (int j = 0; j < codeHeight; j++) { 50 //4、循环将二维码内容定入图片 51 image.setRGB(i, j, encode.get(i, j) ? BLACK : WHITE); 52 } 53 } 54 } catch (WriterException e) { 55 logger.info("生成二维码失败", e); 56 } 57 return image; 58 } 59 }
在页面中显示二维码:
<img src="${pageContext.request.contextPath}/qrcode?name=我的名字">
后台代码:
1 @RequestMapping(value = "/qrcode") 2 public void qrCode(HttpServletResponse response, String name) throws IOException { 3 //把接收到的参数name 生成到二维码里面 4 BufferedImage qrcode = QrCodeUtils.createQrcode(name, 200, 200); 5 response.setContentType("image/jpeg"); 6 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); 7 encoder.encode(qrcode); 8 }
以上是关于生成二维码的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段