文章目录
- 1、zxing 生成二维码
-
-
- (1)相关依赖
- (2)工具类
- (3)生成效果
-
- 微信公众号
1、zxing 生成二维码
(1)相关依赖
<!-- 二维码 -->
<dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version>
</dependency>
<dependency><groupId>com.google.zxing</groupId><artifactId>javase</artifactId><version>3.3.0</version>
</dependency>
(2)工具类
- 生成的文件位置在项目根目录下的 upload 文件夹中,打包上线后就是在 jar 包的同级目录
- 保存数据库的格式为
/tmp/code/2020-10-26/9664f77b-4e1e-4d5c-804f-743f2cfe5ad9.png
- 上面的文件路径返回给前端需要加上服务器的访问路径
import cn.hutool.core.date.DateUtil;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.UUID;/*** 生成二维码** @author Tellsea* @date 2020/10/25*/
public class QrCodeGeneratorUtils {
/*** 文件上传的保存路径*/public static String UPLOAD_PATH = System.getProperty("user.dir") + File.separator + "upload" + File.separator;/*** 生成二维码,返回相对路径** @param text* @return*/public static String generateQRCodeImage(String text) {
HashMap hashMap = new HashMap(16);// 设置二维码字符编码hashMap.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 设置二维码纠错等级hashMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);// 设置二维码边距hashMap.put(EncodeHintType.MARGIN, 1);try {
// 开始生成二维码BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 300, 300, hashMap);String fileName = UUID.randomUUID() + ".png";String tempPath = "code" + File.separator + DateUtil.today() + File.separator;String targetPath = UPLOAD_PATH + tempPath;File fileDir = new File(targetPath);if (!fileDir.exists()) {
fileDir.mkdirs();}// 导出到指定目录MatrixToImageWriter.writeToPath(bitMatrix, "png", new File(targetPath + fileName).toPath());return ("/tmp/" + tempPath + fileName).replace("\\", "/");} catch (WriterException e) {
e.printStackTrace();} catch (IOException e) {
e.printStackTrace();}return null;}public static void main(String[] args) {
String text = "";// 扫码查看当前文章text = "https://tellsea.4kb.cn/wx/customerGroup/customerCodeOk?customerGroupId=1";System.out.println(QrCodeGeneratorUtils.generateQRCodeImage(text));}
}
(3)生成效果
访问效果为浏览器打开当前页面