Java使用Hutool工具包生成二维码、验证码、随机数

目录


前言

Hutool是一个小而全的 Java工具类库

它可以帮助我们操作excel,生成随机数,二维码,验证码,发送电子邮件,转化bean和json等操作,我个人也是非常喜欢这个工具包

当然它的功能远不止这些,下面就简单分享下一些简单实用的操作

功能演示

这些都是通过hutool生成的

简单的验证码

自定义图片的验证码

 普通的验证码

 自定义验证码

这个就比较好玩了,生成的内容范围,个数,背景颜色,字体样式,线条数都是可以自己控制的

 GIF动图验证码

 防蓝光验证码

在网上比较常见的一种

目录

前言

前提准备,需要准备一个项目和本地路径

引入Hutool工具包

生成二维码

自定义背景图片二维码

识别二维码内容

​编辑

验证码

生成普通类型的验证码

自定义验证码生成规则

​编辑

生成GIF格式的验证码

扭曲防蓝光验证码

随机数

总结


前提准备,需要准备一个项目和本地路径

项目是为了方便进行测试

本地路径是为了存放生成的验证码和图片

引入Hutool工具包

首先需要引入hutool依赖,以及使用比较广泛的二维码工具类zxing

  <!--hutool万能工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.21</version>
        </dependency>
        <!--二维码工具包-->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.4.1</version>
        </dependency>

然后创建一个类,就开始编写代码测试啦

生成二维码

package com.example.demo;

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;

public class QrCodeUtils {
    /**
     * 生成普通类型的二维码
     */
    public static void generateGeneralQrCode() {
        // 三个参数分别是 扫码内容 宽高
        QrCodeUtil.generate("http://www.baidu.com/",
                500, 500,
                // 生成路径 切记换成自己的
                FileUtil.file("D:\\Tools\\Java\\HutoolTest\\QRCODE1.jpg"));

    }

    public static void main(String[] args) {
        generateGeneralQrCode();
    }
}

直接运行即可 这样本地就会生成一个二维码图片 

打开就是百度的首页,因为我们写的就是百度的url

自定义背景图片二维码

上面的二维码有点单调是吗,没关系,我们可以自定义加入背景图片

比如我现在有这么一直图,那么我就想把它作为背景图生成二维码

 修改代码

package com.example.demo;

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class QrCodeUtils {
   
    /**
     * 生成自定义图片的二维码
     */
    public static void generateGeneralQrCodeWithBgImg() {
        QrConfig config = new QrConfig(500, 500);
        config.setImg("D:\\Tools\\Images\\image\\大海4.jpg");
        config.setErrorCorrection(ErrorCorrectionLevel.Q);
        QrCodeUtil.generate("https://www.baidu.com/", config, FileUtil.file("D:\\Tools\\Java\\HutoolTest\\QRCODE2.jpg"));

    }



    public static void main(String[] args) {
        generateGeneralQrCodeWithBgImg();
    }
}

这样一个含有我们想要的背景的二维码就生成了,并且不会影响我们正常扫描的

识别二维码内容

上面介绍了如何生成二维码,我们如果想要识别二维码内容,需要扫码

那么下面介绍如何使用代码识别二维码里面的内容

package com.example.demo;

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class QrCodeUtils {
    
    /**
     * 识别图片二维码里面的内容
     */
    public static void decodeQrCode() {
        String decode = QrCodeUtil.decode(FileUtil.file("D:\\Tools\\Java\\HutoolTest\\QRCODE2.jpg"));
        System.out.println(decode);
    }

    public static void main(String[] args) {
        decodeQrCode();
    }
}

验证码

使用hutool生成验证码十分简单,我们可以生成各种各样的验证码图片

生成普通类型的验证码

package com.example;

import cn.hutool.captcha.CaptchaUtil;

/**
 * @description: 测试生成验证码工具类
 * @author: 魏一鹤
 * @createDate: 2022-08-17 22:56
 **/

public class VerificationCodeUtils {
    /**
     * 生成普通类型的验证码
     */
    public static void generateGeneralVerificationCode() {
        /**参数分别是宽、高、验证码个数,横线干扰个数**/
        CaptchaUtil.createLineCaptcha(300, 100, 6, 100)
                .write("D:\\Tools\\Java\\HutoolTest\\lineCaptcha1.png");

    }

    public static void main(String[] args) {
        generateGeneralVerificationCode();
    }

}

 

自定义验证码生成规则

个人觉得这种最实用,可以自定义生成的内容区间,个数,字体样式,背景颜色等等

建议大家多去试试玩玩 挺有意思的

package com.example;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;

/**
 * @description: 测试生成验证码工具类
 * @author: 魏一鹤
 * @createDate: 2022-08-17 22:56
 **/

public class VerificationCodeUtils {
  
    /**
     * 生成自定义规则的验证码
     */
    public static void generateCustomVerificationCode() {
        /**参数分别是宽、高、验证码个数,横线干扰个数**/
        LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 100, 6, 10);
        /**只会在0-9中产生验证码的内容,内容个数为6**/
        RandomGenerator randomGenerator = new RandomGenerator("0123456789", 6);
        lineCaptcha.setGenerator(randomGenerator);
        String lineCaptchaCode = lineCaptcha.getCode();
        System.out.println(lineCaptchaCode);
        lineCaptcha.write("D:\\Tools\\Java\\HutoolTest\\lineCaptcha2.png");

    }

    public static void main(String[] args) {
        generateCustomVerificationCode();
    }

}

生成GIF格式的验证码

这种的就属于整活了,花里胡哨的,感觉用处不大,大家就图一乐

package com.example;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.GifCaptcha;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;

/**
 * @description: 测试生成验证码工具类
 * @author: 魏一鹤
 * @createDate: 2022-08-17 22:56
 **/

public class VerificationCodeUtils {

    /**
     * 生成gif类型的验证码
     */
    public static void generateGifVerificationCode() {
        /**参数分别是宽、高、验证码个数**/
        GifCaptcha gifCaptcha = CaptchaUtil.createGifCaptcha(500, 200, 8);
        gifCaptcha.write("D:\\Tools\\Java\\HutoolTest\\gifCaptcha.gif");
        String gifCaptchaCode = gifCaptcha.getCode();
        System.out.println(gifCaptchaCode);

    }

    public static void main(String[] args) {

        generateGifVerificationCode();
    }

}

这个其实一直在闪 是个gif动图

扭曲防蓝光验证码

package com.example;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.GifCaptcha;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.ShearCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;

/**
 * @description: 测试生成验证码工具类
 * @author: 魏一鹤
 * @createDate: 2022-08-17 22:56
 **/

public class VerificationCodeUtils {

    /**
     * 生成扭曲防蓝光类型的验证码
     */
    public static void generateShearVerificationCode() {
        /**参数分别是宽、高、验证码个数、扭曲程度**/
        ShearCaptcha shearCaptcha = CaptchaUtil.createShearCaptcha(500, 200, 6, 20);
        shearCaptcha.write("D:\\Tools\\Java\\HutoolTest\\shearCaptcha3.png");
        System.out.println(shearCaptcha.getCode());

    }



    public static void main(String[] args) {
        generateShearVerificationCode();
    }

}

个人感觉不好看

随机数

一般随机数每个公司都会自己的生成规则,包括个数,生成方式

大家只需要知道使用hutool也可以简单快速生成随机数即可

部分生成方式如下

        import cn.hutool.core.util.RandomUtil;
 
 
 
        RandomUtil.randomString(10)    //小写字母+数字
        RandomUtil.randomStringUpper(10)   //大写字母+数字
        RandomUtil.randomNumbers(10)   //数字
        RandomUtil.randomStringWithoutStr(10,"0123456789") //不含有0123456789
        RandomUtil.randomString("abc",10)  //只含有abc
        RandomUtil.randomChar()    // 生成小写字母+数字中一个字符
        RandomUtil.randomNumber()  // 生成0123456789中一个字符
        RandomUtil.randomChar("-!?")   // 生成-!?中一个字符
 
      

我们随便挑一些写下

package com.example.demo;

import cn.hutool.core.util.RandomUtil;

/**
 * @description: hutool生成随机数
 * @author: 魏一鹤
 * @createDate: 2022-08-17 23:22
 **/

public class RandomUtils {
    public static void getRandomByHutool(){
        //生成一个10位数的随机数并且只含有abc123
        System.out.println(RandomUtil.randomString("abc123",10));
        //小写字母+数字
        System.out.println(RandomUtil.randomString(10));
        //大写字母+数字
        System.out.println(   RandomUtil.randomStringUpper(10) );
        //全是数字
        System.out.println(  RandomUtil.randomNumbers(10) );

    }
    public static void main(String[] args){
        getRandomByHutool();
    }
}

总结

Hutool里面的小工具还是挺多的,而且好玩实用,大家可以多试试,当然它的作用和功能远不如此

后续会接着更新一些其他功能

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 您好,关于您的问题,我可以回答。JAVA可以使用random函数生成六位随机数,具体代码如下: int num = (int)(Math.random()*900000+100000); 这个代码可以生成六位数的随机数,范围在100000到999999之间。希望能够帮到您。 ### 回答2: 在JAVA中,可以使用random函数生成六位随机数。首先,需要导入Java.util包中的Random类。接下来,可以使用Random类的nextInt方法生成一个0到999999之间的随机整数。然后,通过格式化输出将随机数保持为六位数。 代码示例: ```java import java.util.Random; public class RandomNumberGenerator { public static void main(String[] args) { // 创建Random对象 Random rand = new Random(); // 生成0到999999之间的随机整数 int randomNumber = rand.nextInt(999999); // 格式化输出六位随机数 System.out.printf("%06d", randomNumber); } } ``` 以上代码中,首先通过`import java.util.Random;`导入了Random类,然后在`main`方法中创建了一个Random对象`rand`。接着使用`rand.nextInt(999999)`生成一个0到999999之间的随机整数,再通过`System.out.printf("%06d", randomNumber);`格式化输出这个随机数,保证其为六位数。最后,运行这段代码,在控制台上就可以得到一个六位的随机数。 ### 回答3: 在Java中,我们可以使用Random类的nextInt方法来生成随机数。下面是一个使用random函数生成六位随机数的示例代码: ``` import java.util.Random; public class RandomNumberGenerator { public static void main(String[] args) { // 创建一个Random对象 Random random = new Random(); // 生成六位随机数 int randomNumber = random.nextInt(900000) + 100000; // 输出随机数 System.out.println("生成的六位随机数为:" + randomNumber); } } ``` 在这段代码中,我们创建了一个Random对象,并使用nextInt方法生成一个范围在100000到999999之间的随机数。生成的随机数将被赋值给randomNumber变量,并通过System.out.println方法输出。每次运行代码,都会生成一个不同的六位随机数。 需要注意的是,为了生成六位数的随机数,我们将范围设置为900000,再加上100000,这样才能确保生成的随机数始终为六位数。如果只使用nextInt(999999),有可能生成的随机数为五位数或更短。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小花皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值