本文实例为大家分享了Java二维码生成与解码的具体代码,供大家参考,具体内容如下
一、添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!-- google二维码工具 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version> 3.1 . 0 </version>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version> 1.3 . 1 </version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version> 2.4 </version>
</dependency>
|
二、创建生成二维码接口(接口参数为二维码内容,通常是URL)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/**
* 生成二维码
* google zxing 实现
* @param text
* @return
*/
@RequestMapping (value = "/qrcode/encode" , method = RequestMethod.POST)
public void encodeQrCode(String text, HttpServletResponse response) {
try {
// 设置二维码参数
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8" );
BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 150 , 150 , hints);
//返回二维码
MatrixToImageWriter.writeToStream(bitMatrix, "jpg" , response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
|
三、创建二维码解码接口(直接返回解码后的二维码内容)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/**
* 二维码图片解码
* google zxing 实现
* @param qrImg
* @return
*/
@RequestMapping (value = "/qrcode/decode" , method = RequestMethod.POST)
public String decodeQrCode(MultipartFile qrImg) {
if (!qrImg.isEmpty()) {
try {
BufferedImage image = ImageIO.read(qrImg.getInputStream());
BinaryBitmap binaryBitmap = new BinaryBitmap( new HybridBinarizer( new BufferedImageLuminanceSource(image)));
// 定义二维码的参数:
HashMap<DecodeHintType, Object> hints = new HashMap<>();
// 定义字符集
hints.put(DecodeHintType.CHARACTER_SET, "utf-8" );
Result result = new MultiFormatReader().decode(binaryBitmap, hints);
return result.getText();
} catch (Exception e) {
e.printStackTrace();
}
}
return null ;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。