Java简单生成二维码

说明

二维码本身是一个信息的载体,扫描二维码就可以打开里面的信息。这里介绍了利用hutool包生成二维码的技术。

引入依赖

hutool-extra包里面提供的生成二维码的方法本身是对zxing库的一个封装,所以需要额外引入zxing

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-extra</artifactId>
    <version>5.8.28</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.5.0</version>
</dependency>

最简单的生成

这是最简单的一种方式,直接通过内容来生成二维码(参数依次是: 内容、宽、高和保存路径):

public static void main(String[] args) {
    QrCodeUtil.generate("https://www.baidu.com",300, 300, FileUtil.file("d:/easy.jpg"));
}

效果如下:

Alt

自定义一些样式

如果想要给二维码一些的个性化设置(hutool包的二维码定制化受限),比如二维码颜色、二维码底色、添加图片到二维码中等,可以创建一个QrConfig对象config,然后对config进行配置,并将config作为参数传入generate():

public static void main(String[] args) {
    QrConfig config = new QrConfig(300, 300);
    // 设置外边距
    config.setMargin(20);
    // 设置二维码颜色
    // config.setForeColor(234);
    // 设置底色
    // config.setBackColor(234);
    // 添加logo
    config.setImg("D:\\存取数据\\壁纸\\一光叔叔\\古风篇\\6.jpg");
    QrCodeUtil.generate("https://www.baidu.com",config, FileUtil.file("d:/moreConfig.jpg"));
}

效果如下:

Alt

设置纠错等级

另外,还可以给二维码设置纠错等级。纠错等级越高,二维码的像素块越小,越密集,这样的话即使有部分遮挡,也是可以识别出二维码的;相反,纠错等级越低,二维码的像素块越大,支持远距离识别,但是不允许遮挡。

纠错等级使用zxingErrorCorrectionLevel枚举报错,由低到高依次为: L、M、Q、H,默认为M。

public static void main(String[] args) {
    QrConfig config = new QrConfig(300, 300);
    config.setErrorCorrection(ErrorCorrectionLevel.H);
    QrCodeUtil.generate("https://www.baidu.com",config, FileUtil.file("d:/errorLevel.jpg"));
}

效果如下:

Alt

识别简单的二维码

能生成二维码,也能识别二维码,通过decode:

public static void main(String[] args) {
    String decode = QrCodeUtil.decode(FileUtil.file("d:/qrcode.jpg"));
    System.out.println(decode);
    // https://www.baidu.com
}

但是只能识别简单的二维码,对于复杂一点的似乎就行不通了,比如用该方法识别微信名片的二维码的话,得到的只是null

关于二维码的高级玩法,还是得从zxing库入手啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值