码迷,mamicode.com
首页 > 其他好文 > 详细

生成二维码

时间:2017-05-24 12:41:13      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:name   gradle   exce   字符   ffffff   java   ati   ogg   create   

这是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     }

 

生成二维码

标签:name   gradle   exce   字符   ffffff   java   ati   ogg   create   

原文地址:http://www.cnblogs.com/dwb91/p/6898093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!