Java二维码生成(带logo和底部文字)

本文介绍了如何使用Java创建一个二维码生成工具类,包括设置二维码内容、错误纠正级别、添加Logo和文本,并通过MultipartFile返回生成的二维码图片。示例代码展示了如何处理不同格式的Logo输入和文本添加功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要根据具体场景去调整一些画二维码的细节


一、具体实现

1.生成二维码工具类

代码如下(示例):

import com.ctsi.framework.log.EshoreLogger;
import com.ctsi.framework.log.EshoreLoggerFactory;
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 org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import sun.font.FontDesignMetrics;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class QRUtils {

    private static final String CHARSET = "utf-8";
    /**
     * 二维码尺寸
     * Logo尺寸
     * 文字尺寸
     */
    private static final int QRCODE_WIDTH = 350;
    private static final int QRCODE_HEIGHT = 350;
    private static final int LOGO_WIDTH = 80;
    private static final int LOGO_HEIGHT = 80;
    private static final int FONT_SIZE = 15;

    /**
     * 生成二维码的方法
     *
     * @param content 二维码内容
     * @return
     */
    public static MultipartFile code(InputStream logoFile, String content, String pressText1, String pressText2) {
        //设置map集合要往二维码内添加的参数
        @SuppressWarnings("rawtypes")
        Map map = new HashMap();
        //设置二维码的级别
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        //设置二维码中文本的编码格式
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        //设置二维码的外边框
        map.put(EncodeHintType.MAR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值