chenjiahe
2023-07-14 7a86d3b83f9154221f8bba17b159d56129d03264
src/main/java/com/hx/util/QRCodeUtil.java
@@ -2,6 +2,7 @@
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
@@ -32,7 +33,46 @@
   }
   /**
    * zxing方式生成二维码
    * zxing方式生成二维码(返回base64)
    * 注意:
    * 1,文本生成二维码的方法独立出来,返回image流的形式,可以输出到页面
    * 2,设置容错率为最高,一般容错率越高,图片越不清晰, 但是只有将容错率设置高一点才能兼容logo图片
    * 3,logo图片默认占二维码图片的20%,设置太大会导致无法解析
    *
    * @param content  二维码包含的内容,文本或网址
    * @param size     生成的二维码图片尺寸 可以自定义或者默认(250)
    * @param logoPath logo的存放位置
    */
   public static String QRCodeCreate(String content, Integer size, String logoPath) {
      ByteArrayOutputStream bos = null;
      if(size == null){
         size = 400;
      }
      try{
         char[] rands = content.toCharArray();
         //获取二维码流的形式,写入到目录文件中
         BufferedImage image = getBufferedImage(content, size, logoPath);
         bos = new ByteArrayOutputStream();
         ImageIO.write(image, "JPEG", bos);
         byte[] buf = bos.toByteArray();
         return "data:image/png;base64,"+Base64.getEncoder().encodeToString(buf);
      }catch (Exception e){
         e.printStackTrace();
      }finally {
         if(bos != null) {
            try {
               bos.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
            bos = null;
         }
      }
      return null;
   }
   /**
    * zxing方式生成二维码(返回路径)
    * 注意:
    * 1,文本生成二维码的方法独立出来,返回image流的形式,可以输出到页面
    * 2,设置容错率为最高,一般容错率越高,图片越不清晰, 但是只有将容错率设置高一点才能兼容logo图片