mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
增加QrXXX
This commit is contained in:
@@ -2,7 +2,9 @@ package cn.hutool.extra.qrcode;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.swing.img.ImgUtil;
|
||||
import com.google.zxing.BarcodeFormat;
|
||||
import com.google.zxing.datamatrix.encoder.SymbolShapeHint;
|
||||
@@ -14,6 +16,7 @@ import org.junit.Test;
|
||||
import java.awt.Color;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* 二维码工具类单元测试
|
||||
@@ -31,7 +34,7 @@ public class QrCodeUtilTest {
|
||||
@Test
|
||||
@Ignore
|
||||
public void generateCustomTest() {
|
||||
final QrConfig config = new QrConfig();
|
||||
final QrConfig config = QrConfig.of();
|
||||
config.setMargin(0);
|
||||
config.setForeColor(Color.CYAN);
|
||||
// 背景色透明
|
||||
@@ -44,7 +47,7 @@ public class QrCodeUtilTest {
|
||||
@Test
|
||||
@Ignore
|
||||
public void generateWithLogoTest() {
|
||||
final String icon = FileUtil.isWindows() ? "d:/test/pic/face.jpg" : "~/Desktop/hutool/pic/face.jpg";
|
||||
final String icon = FileUtil.isWindows() ? "d:/test/pic/logo.jpg" : "~/Desktop/hutool/pic/logo.jpg";
|
||||
final String targetPath = FileUtil.isWindows() ? "d:/test/qrcodeWithLogo.jpg" : "~/Desktop/hutool/qrcodeWithLogo.jpg";
|
||||
QrCodeUtil.generate(//
|
||||
"https://hutool.cn/", //
|
||||
@@ -68,17 +71,22 @@ public class QrCodeUtilTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateAsBase64Test() {
|
||||
final String base64 = QrCodeUtil.generateAsBase64("https://hutool.cn/", new QrConfig(400, 400), "png");
|
||||
public void generateAsBase64AndDecodeTest() {
|
||||
final String url = "https://hutool.cn/";
|
||||
String base64 = QrCodeUtil.generateAsBase64DataUri(url, new QrConfig(400, 400), "png");
|
||||
Assert.assertNotNull(base64);
|
||||
|
||||
base64 = StrUtil.removePrefix(base64, "data:image/png;base64,");
|
||||
final String decode = QrCodeUtil.decode(IoUtil.toStream(Base64.decode(base64)));
|
||||
Assert.assertEquals(url, decode);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void generateAsBase64Test2() {
|
||||
final byte[] bytes = FileUtil.readBytes(new File("d:/test/qr.png"));
|
||||
final String encode = Base64.encode(bytes);
|
||||
final String base641 = QrCodeUtil.generateAsBase64("https://hutool.cn/", new QrConfig(400, 400), "png", encode);
|
||||
final String base641 = QrCodeUtil.generateAsBase64DataUri("https://hutool.cn/",
|
||||
new QrConfig(400, 400), "png", bytes);
|
||||
Assert.assertNotNull(base641);
|
||||
}
|
||||
|
||||
@@ -91,7 +99,7 @@ public class QrCodeUtilTest {
|
||||
|
||||
@Test
|
||||
public void pdf417Test() {
|
||||
final BufferedImage image = QrCodeUtil.generate("content111", BarcodeFormat.PDF_417, QrConfig.of());
|
||||
final BufferedImage image = QrCodeUtil.generate("content111", QrConfig.of().setFormat(BarcodeFormat.PDF_417));
|
||||
Assert.assertNotNull(image);
|
||||
}
|
||||
|
||||
@@ -99,11 +107,50 @@ public class QrCodeUtilTest {
|
||||
public void generateDataMatrixTest() {
|
||||
final QrConfig qrConfig = QrConfig.of();
|
||||
qrConfig.setShapeHint(SymbolShapeHint.FORCE_RECTANGLE);
|
||||
final BufferedImage image = QrCodeUtil.generate("content111", BarcodeFormat.DATA_MATRIX, qrConfig);
|
||||
final BufferedImage image = QrCodeUtil.generate("content111", qrConfig.setFormat(BarcodeFormat.DATA_MATRIX));
|
||||
Assert.assertNotNull(image);
|
||||
final QrConfig config = QrConfig.of();
|
||||
config.setShapeHint(SymbolShapeHint.FORCE_SQUARE);
|
||||
final BufferedImage imageSquare = QrCodeUtil.generate("content111", BarcodeFormat.DATA_MATRIX, qrConfig);
|
||||
final BufferedImage imageSquare = QrCodeUtil.generate("content111", qrConfig.setFormat(BarcodeFormat.DATA_MATRIX));
|
||||
Assert.assertNotNull(imageSquare);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void generateSvgTest() {
|
||||
final QrConfig qrConfig = QrConfig.of()
|
||||
.setImg("d:/test/pic/logo.jpg")
|
||||
.setForeColor(Color.blue)
|
||||
.setBackColor(Color.pink)
|
||||
.setRatio(8)
|
||||
.setErrorCorrection(ErrorCorrectionLevel.M)
|
||||
.setMargin(1);
|
||||
final String svg = QrCodeUtil.generateAsSvg("https://hutool.cn/", qrConfig);
|
||||
Assert.assertNotNull(svg);
|
||||
FileUtil.writeString(svg, FileUtil.touch("d:/test/hutool_qr.svg"), StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateAsciiArtTest() {
|
||||
final QrConfig qrConfig = QrConfig.of()
|
||||
.setForeColor(Color.BLUE)
|
||||
.setBackColor(Color.MAGENTA)
|
||||
.setWidth(0)
|
||||
.setHeight(0).setMargin(1);
|
||||
final String asciiArt = QrCodeUtil.generateAsAsciiArt("https://hutool.cn/",qrConfig);
|
||||
Assert.assertNotNull(asciiArt);
|
||||
//Console.log(asciiArt);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generateAsciiArtNoCustomColorTest() {
|
||||
final QrConfig qrConfig = QrConfig.of()
|
||||
.setForeColor(null)
|
||||
.setBackColor(null)
|
||||
.setWidth(0)
|
||||
.setHeight(0).setMargin(1);
|
||||
final String asciiArt = QrCodeUtil.generateAsAsciiArt("https://hutool.cn/",qrConfig);
|
||||
Assert.assertNotNull(asciiArt);
|
||||
//Console.log(asciiArt);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user