世界上25%的人都有拖延症——但我觉得这统计肯定少了,至少我就是一名拖延症患者。一直想把“Java生成名片式(带有背景图片、用户网络头像、用户昵称)的二维码”这篇博客分享出来,但一直拖啊拖,拖到现在,真应了苏格兰的那句谚语——“什么时候都能做的事,往往什么时候都不会去做。”
零、效果图
左上角为微信头像。
沉默王二是文字昵称。
附带URL为http://blog.csdn.net/qing_gee的二维码
还有指定的背景图。
使用场景:
点公众号的微信菜单“我的二维码”,然后展示一张名片式的二维码给用户。
一、源码下载
可以通过GitHub直接下载https://github.com/qinggee/qrcode-utils.
二、源码介绍
你肯定在网络上见到过不少Java生成带有logo的二维码的源码,这些都是生成二维码的初级应用。相对来说,生成“名片式(带有背景图片、用户网络头像、用户名称的二维码图片)的二维码”可能更高级一点,但内在的原理其实是相似的——在一张指定的图片对象Graphics2D利用drawImage()方法绘制上层图像,利用drawString绘制文字。
2.1 使用接口
文件位置: /qrcode-utils/src/test/QrcodeUtilsTest.java
MatrixToBgImageConfig config = new MatrixToBgImageConfig(); // 网络头像地址 config.setHeadimgUrl("https://avatars2.githubusercontent.com/u/6011374?v=4&u=7672049c1213f7663b79583d727e95ee739010ec&s=400"); // 二维码地址,扫描二维码跳转的地址 config.setQrcode_url("http://blog.csdn.net/qing_gee"); // 二维码名片上的名字 config.setRealname("沉默王二"); // 通过QrcodeUtils.createQrcode()生成二维码的字节码 byte[] bytes = QrcodeUtils.createQrcode(config); // 二维码生成路径 Path path = Files.createTempFile("qrcode_with_bg_", ".jpg"); // 写入到文件 Files.write(path, bytes);
如果你从GitHub上下载到源码后,可直接通过eclipse把工程导入到你的工作库,运行/qrcode-utils/src/test/QrcodeUtilsTest.java 即可生成二维码。
2.2 目录文件介绍
核心类为QrcodeUtils.java(用来生成二维码)
名片式二维码的参数类MatrixToBgImageConfig.java
测试用例QrcodeUtilsTest.java
res资源包下有两张图片,bg.jpg为指定的背景图、default_headimg.jpg为默认的头像图
/qrcode-utils/lib为所需的jar包