说明:
二维码的实质就是一个链接地址。此处生成二维码我们使用Hutool工具类已经封装好的方法。
准备:
1:导入依赖:
<!-- 二维码相关依赖 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
<!-- 二维码相关依赖 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.3</version>
</dependency>
<!-- Hutool工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.6.3</version>
</dependency>
2:二维码配置文件
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.awt.*;
/**
* 二维码配置类
*/
@Configuration
public class EwmCode {
@Bean
public QrConfig qrConfig(){
QrConfig qrConfig=new QrConfig();
qrConfig.setBackColor(Color.white.getRGB());
qrConfig.setForeColor(Color.black.getRGB());
return qrConfig;
}
}
3:二维码工具类
说明:hutool工具类提供了丰富的二维码生成方法,此处封装的工具类引用的是hutool工具类中提供的生成二维码方法。
import cn.cdjs.utils.http.AssertUtils;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 二维码工具类
*/
@Component
public class EwmUtils {
@Autowired
private QrConfig qrConfig;
/**
* 二维码生成base64字符串
* @param content 跳转地址(即扫码后跳转的地址,可以是后端项目地址,用户扫码后填写数据提交到后台)
* @param imageType 图片类型
*/
public String generateBase64(String content,String imageType) {
AssertUtils.isNotBlank(content,"生成二维码数据不能为空");
return QrCodeUtil.generateAsBase64(content, qrConfig, imageType);
}
}
4:测试
/**
* 生成二维码测试
*/
@org.junit.Test
public void ewmTest(){
// 扫码跳转地址
String address = "https://www.baidu.com/";
// 生成二维码的图片类型
String imageType = "PNG";
// 调用生成二维码方法
String ewmInfo = ewmUtils.generateBase64(address, imageType);
System.err.println("二维码内容:" + ewmInfo);
}
输出:
二维码内容:data:image/PNG;base64,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
使用Html将输出二维码字符串数据转换为图片:
说明:<img src="此处内容为生成二维码输出的字符串数据"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>二维码</title>
</head>
<body>
<img src="data:image/PNG;base64,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">
</body>
</html>
使用浏览器打开此Html:(生成的二维码被CSDN屏蔽了)