
如何在线生成二维码?
一、介绍
说到二维码,我相信大家每天都会用到,尤其是在手机支付的场景,使用频率极广。
实际上二维码在1994年的时候就已经诞生了,由 Denso 公司研制而成,只是那个时候使用范围还不是很大。
早期的二维码由于很容易通过技术方式进行伪造,因此很少有企业愿意去使用他,随着技术的不断迭代和更新,二维码的安全性更进一步得到了提升,从而使得更多的企业愿意使用这项新技术,例如当下的移动支付,还有微信互推,扫码出行等等,极大的方便了网民们的购物、社交和出行!
在实际的业务开发过程中,二维码的使用场景开发也会经常出现在我们开发人员的面前,我们应该如何去处理呢,今天小编就带着大家一起深入的了解一下它的技术实现过程。
二、代码实践
在 Java 生态体系里面,操作二维码的开源项目很多,如 SwetakeQRCode、BarCode4j、Zxing 等等。
今天我们介绍下简单易用的 google 公司的 zxing,zxing 不仅使用方便,而且可以还操作条形码或者二维码等,不仅有 java 版本,还有 Android 版。
开源库地址:
● GitHub 开源地址:https://github.com/zxing/zxing
● zxing 二进制包下载地址:http://repo1.maven.org/maven2/com/google/zxing
● zxing Maven 仓库地址:https://mvnrepository.com/artifact/com.google.zxing
通过 Maven 仓库,我们可以很轻松的将其依赖包添加到自己的项目。
2.1、添加依赖包
开发中如果是非 web 应用则导入 core 包即可,如果是 web 应用,则 core 与 javase 一起导入。
2.2、生成二维码
如何快速生成二维码呢?请看下面的测试代码!
还是老规矩,我们先创建一个内容为Hello World的二维码,然后在创建一个内容为https://www.baidu.com/链接地址的二维码。
运行程序之后,输出内容如下:
打开图片内容!
用微信扫一扫,结果如下:
2.3、读取二维码
创建很容易,那么如何读取二维码内容呢?请看下面的测试代码:
运行程序,输出内容如下:
2.4、web 二维码交互展示
在实际的项目开发过程中,很多时候二维码都是根据参数实时输出到网页上进行显示的,它的实现原理类似验证码,例如下图,它们都是后台先生成内存图像BufferedImage,然后使用ImageIO.write写出来。
在线生成二维码的功能,其实也类似于此!
前端关键代码如下:
后端关键代码如下:
其中createCodeToOutputStream方法,源码如下:
这种方式,如果是单体应用,其实没太大问题,在微服务开发的环境下有局限性。
因此我们还有另外一种玩法,那就是将生成的图片流转成base64的格式,然后返回给前端进行展示。
关键代码改造过程如下:
最后,把base64内容以json的形式返回给前端,进行展示!
三、小结
本文主要围绕二维码的技术实现做了简单的介绍,其实关于二维码的故事,还远不止于此,在下期的文章中,我们还会继续介绍它。
鉴于笔者才疏学浅,难免会有理解不到位的地方,欢迎网友批评指出!
