1、由来:
由于现在对二维码的使用比较多,正好我在项目里面也使用到了,所以写篇博客记录一下。
2、引入依赖:
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
3、生成二维码
这里我是将我博客主页的url生成二维码,微信扫一扫可以看到我的博客主页(欢迎骚扰)
QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", 300, 300, FileUtil.file("D:\\QRCode\\qrcode.jpg"));
4、带参数的
4.1、设置参数
上面这个只是简单的生成二维码,接下来说说自定义参数的方式生成,如长、宽、二维码的颜色、背景颜色、边距等参数,下面是代码和效果图:
QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距
config.setMargin(3);
// 设置前景色,既二维码颜色(青色)
config.setForeColor(Color.CYAN.getRGB());
// 设置背景色(灰色)
config.setBackColor(Color.GRAY.getRGB());
// 生成二维码到文件,也可以到流
QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", config, FileUtil.file("D:/qrcode.jpg"));
4.2、附带logo小图标
QrCodeUtil.generate(//
"https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", //二维码内容
QrConfig.create().setImg("C:\\Users\\jlz\\Pictures\\Camera Roll\\zy.jpg"), //附带logo
FileUtil.file("D:\\excel\\QRCode\\qrcode.jpg")//写出到的文件
);
4.3、调整纠错级别
很多时候,二维码无法识别,这时就要调整纠错级别。纠错级别使用zxing的ErrorCorrectionLevel枚举封装,包括:L、M、Q、H几个参数,由低到高。低级别的像素块更大,可以远距离识别,但是遮挡就会造成无法识别。高级别则相反,像素块小,允许遮挡一定范围,但是像素块更密集。
QrConfig config = new QrConfig();
// 高纠错级别
config.setErrorCorrection(ErrorCorrectionLevel.H);
QrCodeUtil.generate("https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343", config, FileUtil.file("D:\\excel\\QRCode\\qrcode1.jpg"));
5、识别二维码
String decode = QrCodeUtil.decode(FileUtil.file("D:\\excel\\QRCode\\qrcode.jpg"));
6、实际可用
在项目中我还加了生成二维码名称,是根据日期和时间生成的唯一名称,这就解决了名称可能重复的问题,下面是完整代码:文章来源:https://www.toymoban.com/news/detail-512408.html
package com.yang.zhang.QrCode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Value;
import java.io.File;
import java.util.Date;
/**
* 二维码生成
*
* @Author zhangzhongqing
* @Date 2022/12/14 13:56
*/
@RestController
@RequestMapping("/qrCode")
@Api(tags = "二维码生成")
public class QrCode {
@Value("${file.local.filePath}")
private String filePath;
@PostMapping("/qrCode1")
@ApiOperation(value="二维码生成")
public void QrCode() {
//二维码里面的信息
String message = "https://blog.csdn.net/liulangzhezhang?spm=1000.2115.3001.5343" ;
// 生成二维码
String picUrl = generateQRCode(message);
System.out.println(picUrl);
}
// 生成二维码并返回地址 message二维码中内容,name文件名
private String generateQRCode(String message) {
String newFilePath = getUploadFilePath(".jpg");
String localPath = filePath + "/" + "QRCode" + "/" + newFilePath;
File newFile = new File(localPath);
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
// 生成二维码
QrCodeUtil.generate(message, 300, 300, FileUtil.file(localPath));
return "/files" + newFilePath;
}
// 生成文件的路径和文件名 如 jpg/2022-05-20/14_50_39_1.jpg
private String getUploadFilePath(String suffix) {
Date nowDate = new Date();
String dateStr = DateUtil.formatDate(nowDate);
String timeStr = DateUtil.format(nowDate, "HH_mm_ss");
String newFilePath ="/" + dateStr + "/" + timeStr + suffix;
return newFilePath;
}
}
7、总结
这就是简单的生成二维码的方法,欢迎讨论与指正!!!文章来源地址https://www.toymoban.com/news/detail-512408.html
到了这里,关于java实现二维码生成功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!