二维码在我们目前的生活工作中,随处可见,日常开发中难免会遇到需要生成二维码的场景,网上也有很多开源的平台可以使用,不过这里我们可以通过几个开源组件,自己来实现一下。
在动手之前我们先思考一下需要进行的操作,首先我们需要生成一个二维码,其次我们需要在这里二维码中间添加一个头像。
这里我们生成二维码使用工具 zxing
,合成图片我们采用 thumbnailator
,接下来我们实操一下吧。
生成二维码
首先我们先根据目标地址,生成一个二维码,这里我们使用的是组件 zxing
,在 SpringBoot
的pom
依赖中,我们加入下面的依赖。
1 |
|
然后编写工具类 QRCodeGenerator.java
1 |
|
这个静态方法有四个参数,分别是:
- 跳转的链接内容;
- 二维码的宽度;
- 二维码的高度;
- 生成的二维码后的存放路径;
代码中还有几个常量,EncodeHintType.CHARACTER_SET
:表示编码;EncodeHintType.ERROR_CORRECTION
表示二维码的容错率;EncodeHintType.MARGIN
表示二维码的边框。
解释一下什么是二维码的容错率,大家在日常生活或者工作中应该会发现,有些二维码轻轻一扫就扫成功了,有的二维码却很难扫成功,这背后就是二维码的容错率的原因(对,有时候并不是你的网络问题!)。
不同密度的二维码所包含的信息其编码的字符、容错率均不同。密度越低,编码的字符个数越少、容错率越低,二维码容错率表示二维码图标被遮挡多少后,仍可以被扫描出来的能力。目前,典型的二维码的容错率分为 7%、15%、25%、30% 四个等级,容错率越高,越容易被快速扫描。“但是,容错率越高,二维码里面的黑白格子也就越多。因此,对于目前主流手机,在绝大多数扫描场景下,仍普遍应用 7% 容错率的二维码就能满足需求。
感兴趣的小伙伴也可以自己尝试几个不同的容错率,看看扫码的难度有没有变化。
接下来,我们编写一个 main 方法来生成一个二维码
1 |
|
运行完上面的 main
方法,我们可以得到一个二维码,到这里我们第一步已经完成了,接下来就是给这个二维码加上我们的头像。
添加头像
添加头像我们需要准备一个头像的照片,阿粉这里就用阿粉的头像了,如果这里有现成大小的头像就直接拿来使用就行,如果没有也没有关系,我们可以自己裁剪,这里我们就需要用来图片处理工具 thumbnailator
了,
先将头像处理成 100 x 100 的大小,然后再合成上去就行,代码如下:
1 |
|
这个就是最终生成的带头像的二维码啦,友情提示,扫码可以看到更多优质文章。
通过上面的代码可以看到,ThumbnailsImageUtils
是真的很多强大,一行代码就能搞定图片缩小和图片合成,更多关于 ThumbnailsImageUtils
工具类的完整代码如下,赶紧收藏起来。
1 |
|
总结
今天阿粉通过两个组件带大家实践了一个二维码的生成和图片的合成,这两个技巧在工作中难免会使用到,赶紧保存使用起来吧。