生活中时常会有这种情形,扫码登陆,扫码注册,扫码访问某网页等。其实其中的原理就是,这个二维码中包含了你要访问的地址的url,扫码可以解析其中的url从而进行访问。
下面以springboot项目来实现,通过扫二维码访问我的博客首页。
引入谷歌二维码生成器jar包:
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
编写二维码生成工具类:
public class QRCodeUtil {
public static BitMatrix generateQRCodeStream(String content, HttpServletResponse response) {
//给相应添加头部信息,主要告诉浏览器返回的是图片流
response.setHeader("Cache-Control", "no-store");
// 不设置缓存
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/png");
//设置图片的文字编码以及内边框
Map<EncodeHintType, Object> hints = new HashMap<>();
//编码
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//边框距
hints.put(EncodeHintType.MARGIN, 0);
BitMatrix bitMatrix;
try {
//参数分别为:编码内容(要访问的url)、编码类型、图片宽度、图片高度,设置参数
bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 600, 600, hints);
} catch (WriterException e) {
e.printStackTrace();
return null;
}
return bitMatrix;
}
}
二维码接口:
@RestController
@RequestMapping("/test")
public class QRCodeTestController {
@GetMapping("/getQrCode")
public void generateQRCode4Product(HttpServletRequest request, HttpServletResponse response) {
String longUrl;
try {
longUrl = "https://blog.csdn.net/chenping1993";
// 生成二维码
BitMatrix qRcodeImg = QRCodeUtil.generateQRCodeStream(longUrl, response);
// 将二维码输出到页面中
MatrixToImageWriter.writeToStream(qRcodeImg, "png", response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
}
启动项目访问查看二维码页面:
微信或者其他方式扫此二维码,成功访问到了我的博客首页: