目录
Hutool是一个小而全的 Java工具类库
它可以帮助我们操作excel,生成随机数,二维码,验证码,发送电子邮件,转化bean和json等操作,我个人也是非常喜欢这个工具包
当然它的功能远不止这些,下面就简单分享下一些简单实用的操作
这些都是通过hutool生成的
简单的验证码
自定义图片的验证码
普通的验证码
自定义验证码
这个就比较好玩了,生成的内容范围,个数,背景颜色,字体样式,线条数都是可以自己控制的
GIF动图验证码
防蓝光验证码
在网上比较常见的一种
目录
项目是为了方便进行测试
本地路径是为了存放生成的验证码和图片
首先需要引入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();
- }
-
- }
这种的就属于整活了,花里胡哨的,感觉用处不大,大家就图一乐
- 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里面的小工具还是挺多的,而且好玩实用,大家可以多试试,当然它的作用和功能远不如此
后续会接着更新一些其他功能