mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
新增 QRCode base64 编码形式返回
This commit is contained in:
parent
a4bc10801c
commit
5d5480af45
@ -19,12 +19,18 @@ import com.google.zxing.common.HybridBinarizer;
|
||||
import java.awt.Image;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
/**
|
||||
* 基于Zxing的二维码工具类
|
||||
*
|
||||
@ -34,9 +40,59 @@ import java.util.HashMap;
|
||||
*/
|
||||
public class QrCodeUtil {
|
||||
|
||||
/**
|
||||
* 生成代 logo 图片的 Base64 编码格式的二维码,以 String 形式表示
|
||||
* @param content 内容
|
||||
* @param qrConfig 二维码配置,包括长、宽、边距、颜色等
|
||||
* @param imageType 图片类型(图片扩展名),见{@link ImgUtil}
|
||||
* @param logoBase64 logo 图片的 base64 编码
|
||||
* @return 图片 Base64 编码字符串
|
||||
*/
|
||||
public static String generateAsBase64(String content, QrConfig qrConfig,String imageType,String logoBase64){
|
||||
byte[] decode;
|
||||
try {
|
||||
decode = Base64.getDecoder().decode(logoBase64);
|
||||
}catch (Exception e){
|
||||
throw new QrCodeException(e);
|
||||
}
|
||||
return generateAsBase64(content,qrConfig,imageType,decode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成代 logo 图片的 Base64 编码格式的二维码,以 String 形式表示
|
||||
* @param content 内容
|
||||
* @param qrConfig 二维码配置,包括长、宽、边距、颜色等
|
||||
* @param imageType 图片类型(图片扩展名),见{@link ImgUtil}
|
||||
* @param logo logo 图片的byte[]
|
||||
* @return 图片 Base64 编码字符串
|
||||
*/
|
||||
public static String generateAsBase64(String content, QrConfig qrConfig,String imageType,byte [] logo){
|
||||
BufferedImage img;
|
||||
try {
|
||||
img = ImageIO.read(new ByteArrayInputStream(logo));
|
||||
} catch (IOException e) {
|
||||
throw new QrCodeException(e);
|
||||
}
|
||||
qrConfig.setImg(img);
|
||||
return generateAsBase64(content,qrConfig, imageType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成 Base64 编码格式的二维码,以 String 形式表示
|
||||
* @param content 内容
|
||||
* @param qrConfig 二维码配置,包括长、宽、边距、颜色等
|
||||
* @param imageType 图片类型(图片扩展名),见{@link ImgUtil}
|
||||
* @return 图片 Base64 编码字符串
|
||||
*/
|
||||
public static String generateAsBase64(String content,QrConfig qrConfig,String imageType){
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
generate(content,qrConfig,imageType,bos);
|
||||
byte[] encode = Base64.getEncoder().encode(bos.toByteArray());
|
||||
return MessageFormat.format("data:image/{0};base64,{1}",imageType,new String(encode));
|
||||
}
|
||||
/**
|
||||
* 生成PNG格式的二维码图片,以byte[]形式表示
|
||||
*
|
||||
*
|
||||
* @param content 内容
|
||||
* @param width 宽度
|
||||
* @param height 高度
|
||||
@ -51,7 +107,7 @@ public class QrCodeUtil {
|
||||
|
||||
/**
|
||||
* 生成PNG格式的二维码图片,以byte[]形式表示
|
||||
*
|
||||
*
|
||||
* @param content 内容
|
||||
* @param config 二维码配置,包括长、宽、边距、颜色等
|
||||
* @return 图片的byte[]
|
||||
|
@ -1,7 +1,9 @@
|
||||
package cn.hutool.extra.qrcode;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.io.File;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
@ -51,4 +53,18 @@ public class QrCodeUtilTest {
|
||||
String decode = QrCodeUtil.decode(FileUtil.file("e:/pic/qr.png"));
|
||||
Console.log(decode);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateAsBase64Test(){
|
||||
String base64 = QrCodeUtil.generateAsBase64("http://hutool.cn/", new QrConfig(400, 400), "png");
|
||||
System.out.println(base64);
|
||||
|
||||
byte[] bytes = FileUtil.readBytes(
|
||||
new File("e:/pic/qr.png"));
|
||||
String encode = Base64.encode(bytes);
|
||||
String base641 = QrCodeUtil.generateAsBase64("http://hutool.cn/", new QrConfig(400, 400), "png", encode);
|
||||
System.out.println(base641);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user