From 75aabb3f52086a36d08c7f67bfc15b0f4eb55b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E6=AD=A3=E5=85=A8?= Date: Fri, 22 Jul 2022 16:38:52 +0800 Subject: [PATCH] =?UTF-8?q?#I5I2Y8=20=E6=B7=BB=E5=8A=A0=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AEDATA=5FMATRIX=E7=9A=84=E7=AC=A6=E5=8F=B7=E5=BD=A2?= =?UTF-8?q?=E7=8A=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/extra/qrcode/QrConfig.java | 17 +++++++++++++++++ .../cn/hutool/extra/qrcode/QrCodeUtilTest.java | 17 +++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/qrcode/QrConfig.java b/hutool-extra/src/main/java/cn/hutool/extra/qrcode/QrConfig.java index 0c2789c87..91675cc16 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/qrcode/QrConfig.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/qrcode/QrConfig.java @@ -5,6 +5,7 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; +import com.google.zxing.datamatrix.encoder.SymbolShapeHint; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import java.awt.Color; @@ -44,6 +45,10 @@ public class QrConfig { protected Image img; /** 二维码中的Logo缩放的比例系数,如5表示长宽最小值的1/5 */ protected int ratio = 6; + /** + * DATA_MATRIX的符号形状 + */ + protected SymbolShapeHint shapeHint = SymbolShapeHint.FORCE_NONE; /** * 创建QrConfig @@ -326,6 +331,17 @@ public class QrConfig { return this; } + /** + * 设置DATA_MATRIX的符号形状 + * + * @param shapeHint DATA_MATRIX的符号形状 + * @return this; + */ + public QrConfig setShapeHint(SymbolShapeHint shapeHint) { + this.shapeHint = shapeHint; + return this; + } + /** * 转换为Zxing的二维码配置 * @@ -357,6 +373,7 @@ public class QrConfig { } hints.put(EncodeHintType.ERROR_CORRECTION, value); + hints.put(EncodeHintType.DATA_MATRIX_SHAPE, shapeHint); } if (null != this.margin) { hints.put(EncodeHintType.MARGIN, this.margin); diff --git a/hutool-extra/src/test/java/cn/hutool/extra/qrcode/QrCodeUtilTest.java b/hutool-extra/src/test/java/cn/hutool/extra/qrcode/QrCodeUtilTest.java index 30dde68d6..735f15db3 100755 --- a/hutool-extra/src/test/java/cn/hutool/extra/qrcode/QrCodeUtilTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/qrcode/QrCodeUtilTest.java @@ -5,6 +5,7 @@ import cn.hutool.core.img.ImgUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Console; import com.google.zxing.BarcodeFormat; +import com.google.zxing.datamatrix.encoder.SymbolShapeHint; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import org.junit.Assert; import org.junit.Ignore; @@ -84,16 +85,28 @@ public class QrCodeUtilTest { @Test @Ignore - public void decodeTest3(){ + public void decodeTest3() { final String decode = QrCodeUtil.decode(ImgUtil.read("d:/test/qr_a.png"), false, true); Console.log(decode); } @Test - public void pdf417Test(){ + public void pdf417Test() { final BufferedImage image = QrCodeUtil.generate("content111", BarcodeFormat.PDF_417, QrConfig.create()); Assert.assertNotNull(image); } + @Test + public void generateDataMatrixTest() { + QrConfig qrConfig = QrConfig.create(); + qrConfig.setShapeHint(SymbolShapeHint.FORCE_RECTANGLE); + final BufferedImage image = QrCodeUtil.generate("content111", BarcodeFormat.DATA_MATRIX, qrConfig); + Assert.assertNotNull(image); + QrConfig config = QrConfig.create(); + config.setShapeHint(SymbolShapeHint.FORCE_SQUARE); + final BufferedImage imageSquare = QrCodeUtil.generate("content111", BarcodeFormat.DATA_MATRIX, qrConfig); + Assert.assertNotNull(imageSquare); + } + }