谷歌Zxing二维码,用数据流输出到页面显示
程序员文章站
2022-07-14 18:25:30
...
笔记,谷歌Zxing二维码,用数据流输出到页面显示
二维码一直都很流行,今日实践了一下,需求是针对不同的参数生成地址链接二维码,并展示在页面上,如果采用生成图片保存本地再返回相对路径,会产生一堆垃圾图片文件,还要后期清除实在是麻烦,想起登录时的校验码可以直接将流输出到页面,故就异曲同工吧,少废话直接上代码。
项目是SpringMVC,maven管理
先导入谷歌的二维码pom文件Zxing的依赖关系
<!-- 二维码 -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.0</version>
</dependency>
页面jsp显示二维码处:
<img class="q_code" src="${path}/tv/getQ?id=${id}" />
java controller代码
@RequestMapping(value = "/getQ", method = { RequestMethod.POST, RequestMethod.GET })
public void getqcode(HttpServletResponse resp, String id) throws IOException {
String url = "要生成二维码的地址"+id;
if (url != null && !"".equals(url)) {
ServletOutputStream stream = null;
try {
int width = 200;//图片的宽度
int height = 200;//高度
stream = resp.getOutputStream();
QRCodeWriter writer = new QRCodeWriter();
BitMatrix m = writer.encode(url, BarcodeFormat.QR_CODE, height, width);
MatrixToImageWriter.writeToStream(m, "png", stream);
} catch (WriterException e) {
e.printStackTrace();
} finally {
if (stream != null) {
stream.flush();
stream.close();
}
}
}
}
最后当页面加载的时候会去执行img标签内的src请求返回图片流并展示。
上一篇: [vue]利用router动态渲染菜单项和子菜单项
下一篇: 深入理解Android消息机制