生成二维码

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     }

 

以上是关于生成二维码的主要内容,如果未能解决你的问题,请参考以下文章

postman 自动生成 curl 代码片段

leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段

Apollo Codegen 没有找到生成代码的操作或片段

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

vscode代码片段生成vue模板