package com.scamel.mom.common.util;
import cn.hutool.core.io.resource.ClassPathResource;
import com.alibaba.nacos.common.utils.StringUtils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import sun.font.FontDesignMetrics;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.geom.AffineTransform;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 二维码、条码生成工具
*/
public class CodeUtils {
/**
* 中心图片宽度的
*/
private static final int IMAGE_WIDTH = 80;
private static final int IMAGE_HEIGHT = 80;
private static final int IMAGE_HALF_WIDTH = IMAGE_WIDTH / 2;
private static final int FRAME_WIDTH = 2;
/**
* 宋体
*/
private static Font fontSun;
/*
静态加载字体(linux没中文字体,会显示口口口)
*/
static {
try {
ClassPathResource fontResource = new ClassPathResource("font/simsun.ttc");
Font font = Font.createFont(Font.TRUETYPE_FONT, fontResource.getStream());
fontSun = font.deriveFont(Font.BOLD, 15);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 生成二维码
*
* @param content 二维码内容
* @return 图片
* @throws WriterException 异常
*/
public static BufferedImage createQRImage(String content) throws WriterException {
// 二维码参数设置
Map<EncodeHintType, Object> hints = new HashMap<>();
// 安全等级,最高h
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
// 编码设置
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
// 设置margin=0-10
hints.put(EncodeHintType.MARGIN, 1);
// 创建矩阵容器
BitMatrix bitMatrix = new
生成中心插入图片底部带文字的二维码
最新推荐文章于 2026-06-18 11:13:15 发布
这个代码示例展示了如何使用Java的GoogleZxing库生成二维码,同时支持在二维码中心插入图片和底部添加文字。它还包含了自定义字体加载、图片缩放以及二维码颜色和边框的调整功能。


1206

被折叠的 条评论
为什么被折叠?



