需要根据具体场景去调整一些画二维码的细节
一、具体实现
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