From 7769822e11892d6695aa5968a4dced12e208f39d Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 29 Jul 2022 23:05:20 +0800 Subject: [PATCH] fix code --- .../hutool/core/bean/copier/CopyOptions.java | 4 +-- .../java/cn/hutool/core/codec/Base64.java | 4 +++ .../java/cn/hutool/core/compress/ZipUtil.java | 32 ++++++++++++++++- .../java/cn/hutool/core/convert/Convert.java | 35 ++++++++++++++----- .../main/java/cn/hutool/core/net/NetUtil.java | 6 ++-- .../cn/hutool/core/regex/PatternPool.java | 2 +- .../core/bean/copier/BeanCopierTest.java | 21 +++++++++++ .../core/convert/ConvertToBeanTest.java | 27 ++++++++++++++ .../java/cn/hutool/core/util/ZipUtilTest.java | 16 +++++++++ .../src/test/java/cn/hutool/db/H2Test.java | 14 ++++++++ .../compress/archiver/StreamArchiver.java | 11 ++++++ .../compress/extractor/StreamExtractor.java | 9 +++++ .../hutool/extra/compress/ArchiverTest.java | 29 ++++++++++----- .../hutool/extra/compress/ExtractorTest.java | 11 ++++++ .../hutool/swing/img/BackgroundRemoval.java | 6 ++-- .../java/cn/hutool/swing/img/ImgUtil.java | 13 +++++++ .../java/cn/hutool/swing/img/ImgUtilTest.java | 24 ++++++++++++- 17 files changed, 237 insertions(+), 27 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/copier/CopyOptions.java b/hutool-core/src/main/java/cn/hutool/core/bean/copier/CopyOptions.java index 3cc1955e6..d8422e4c6 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/copier/CopyOptions.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/copier/CopyOptions.java @@ -60,7 +60,7 @@ public class CopyOptions implements Serializable { */ protected boolean transientSupport = true; /** - * 是否覆盖目标值,如果不覆盖,会先读取目标对象的值,非{@code null}则写,否则忽略。如果覆盖,则不判断直接写 + * 是否覆盖目标值,如果不覆盖,会先读取目标对象的值,为{@code null}则写,否则忽略。如果覆盖,则不判断直接写 */ protected boolean override = true; @@ -282,7 +282,7 @@ public class CopyOptions implements Serializable { } /** - * 设置是否覆盖目标值,如果不覆盖,会先读取目标对象的值,非{@code null}则写,否则忽略。如果覆盖,则不判断直接写 + * 设置是否覆盖目标值,如果不覆盖,会先读取目标对象的值,为{@code null}则写,否则忽略。如果覆盖,则不判断直接写 * * @param override 是否覆盖目标值 * @return this diff --git a/hutool-core/src/main/java/cn/hutool/core/codec/Base64.java b/hutool-core/src/main/java/cn/hutool/core/codec/Base64.java index a6e9c9553..2dd632d20 100755 --- a/hutool-core/src/main/java/cn/hutool/core/codec/Base64.java +++ b/hutool-core/src/main/java/cn/hutool/core/codec/Base64.java @@ -263,6 +263,10 @@ public class Base64 { * @since 5.7.5 */ public static boolean isBase64(final byte[] base64Bytes) { + if (base64Bytes == null || base64Bytes.length < 3) { + return false; + } + boolean hasPadding = false; for (final byte base64Byte : base64Bytes) { if (hasPadding) { diff --git a/hutool-core/src/main/java/cn/hutool/core/compress/ZipUtil.java b/hutool-core/src/main/java/cn/hutool/core/compress/ZipUtil.java index eb5926a6f..08419662f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/compress/ZipUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/compress/ZipUtil.java @@ -29,6 +29,7 @@ import java.nio.file.FileSystem; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; import java.util.function.Consumer; import java.util.zip.ZipEntry; @@ -122,7 +123,7 @@ public class ZipUtil { } } catch (final FileAlreadyExistsException ignored) { // 不覆盖情况下,文件已存在, 跳过 - } catch (final IOException e){ + } catch (final IOException e) { throw new IORuntimeException(e); } } @@ -260,6 +261,7 @@ public class ZipUtil { */ public static File zip(final File zipFile, final Charset charset, final boolean withSrcDir, final FileFilter filter, final File... srcFiles) throws IORuntimeException { validateFiles(zipFile, srcFiles); + //noinspection resource ZipWriter.of(zipFile, charset).add(withSrcDir, filter, srcFiles).close(); return zipFile; } @@ -412,6 +414,7 @@ public class ZipUtil { * @since 5.5.2 */ public static File zip(final File zipFile, final Charset charset, final Resource... resources) throws UtilException { + //noinspection resource ZipWriter.of(zipFile, charset).add(resources).close(); return zipFile; } @@ -528,11 +531,38 @@ public class ZipUtil { * @since 4.5.8 */ public static File unzip(final ZipFile zipFile, final File outFile) throws IORuntimeException { + return unzip(zipFile, outFile, -1); + } + + /** + * 限制解压后文件大小 + * + * @param zipFile zip文件,附带编码信息,使用完毕自动关闭 + * @param outFile 解压到的目录 + * @param limit 限制解压文件大小(单位B) + * @return 解压的目录 + * @throws IORuntimeException IO异常 + * @since 5.8.5 + */ + public static File unzip(ZipFile zipFile, File outFile, long limit) throws IORuntimeException { if (outFile.exists() && outFile.isFile()) { throw new IllegalArgumentException( StrUtil.format("Target path [{}] exist!", outFile.getAbsolutePath())); } + // pr#726@Gitee + if (limit > 0) { + final Enumeration zipEntries = zipFile.entries(); + long zipFileSize = 0L; + while (zipEntries.hasMoreElements()) { + ZipEntry zipEntry = zipEntries.nextElement(); + zipFileSize += zipEntry.getSize(); + if (zipFileSize > limit) { + throw new IllegalArgumentException("The file size exceeds the limit"); + } + } + } + try (final ZipReader reader = new ZipReader(zipFile)) { reader.readTo(outFile); } diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java b/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java index 915f23ec4..f4eecb3ba 100755 --- a/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java @@ -605,19 +605,38 @@ public class Convert { } /** - * 转换为Map + * 转换为Map,若value原本就是Map,则转为原始类型,若不是则默认转为HashMap * - * @param 键类型 - * @param 值类型 - * @param keyType 键类型 + * @param 键类型 + * @param 值类型 + * @param keyType 键类型 * @param valueType 值类型 - * @param value 被转换的值 + * @param value 被转换的值 * @return {@link Map} * @since 4.6.8 */ - @SuppressWarnings("unchecked") - public static Map toMap(final Class keyType, final Class valueType, final Object value) { - return (Map) new MapConverter().convert(HashMap.class, keyType, valueType, value); + public static Map toMap(Class keyType, Class valueType, Object value) { + if (value instanceof Map) { + return toMap(value.getClass(), keyType, valueType, value); + } else { + return toMap(HashMap.class, keyType, valueType, value); + } + } + + /** + * 转换为Map + * + * @param mapType 转后的具体Map类型 + * @param 键类型 + * @param 值类型 + * @param keyType 键类型 + * @param valueType 值类型 + * @param value 被转换的值 + * @return {@link Map} + */ + @SuppressWarnings({"unchecked"}) + public static Map toMap(Class mapType, Class keyType, Class valueType, Object value) { + return (Map) MapConverter.INSTANCE.convert(mapType, keyType, valueType, value); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index 988f34d57..4ff2a8284 100755 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -86,13 +86,13 @@ public class NetUtil { /** * 将IPv6地址字符串转为大整数 * - * @param IPv6Str 字符串 + * @param ipv6Str 字符串 * @return 大整数, 如发生异常返回 null * @since 5.5.7 */ - public static BigInteger ipv6ToBitInteger(final String IPv6Str) { + public static BigInteger ipv6ToBigInteger(final String ipv6Str) { try { - final InetAddress address = InetAddress.getByName(IPv6Str); + final InetAddress address = InetAddress.getByName(ipv6Str); if (address instanceof Inet6Address) { return new BigInteger(1, address.getAddress()); } diff --git a/hutool-core/src/main/java/cn/hutool/core/regex/PatternPool.java b/hutool-core/src/main/java/cn/hutool/core/regex/PatternPool.java index 31015a0ee..0f7861919 100755 --- a/hutool-core/src/main/java/cn/hutool/core/regex/PatternPool.java +++ b/hutool-core/src/main/java/cn/hutool/core/regex/PatternPool.java @@ -133,7 +133,7 @@ public class PatternPool { /** * 时间正则 */ - public static final Pattern TIME = Pattern.compile("\\d{1,2}:\\d{1,2}(:\\d{1,2})?"); + public static final Pattern TIME = Pattern.compile(RegexPool.TIME); /** * 中国车牌号码(兼容新能源车牌) */ diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/copier/BeanCopierTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/copier/BeanCopierTest.java index 6cee34b0b..3dcb07b35 100644 --- a/hutool-core/src/test/java/cn/hutool/core/bean/copier/BeanCopierTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/copier/BeanCopierTest.java @@ -64,4 +64,25 @@ public class BeanCopierTest { private static class B { private String value; } + + /** + * 为{@code null}则写,否则忽略。如果覆盖,则不判断直接写 + */ + @Test + public void issues2484Test() { + final A a = new A(); + a.setValue("abc"); + final B b = new B(); + b.setValue("123"); + + BeanCopier copier = BeanCopier.of(a, b, CopyOptions.of().setOverride(false)); + copier.copy(); + Assert.assertEquals("123", b.getValue()); + + b.setValue(null); + copier = BeanCopier.of(a, b, CopyOptions.of().setOverride(false)); + copier.copy(); + Assert.assertEquals("abc", b.getValue()); + } + } diff --git a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToBeanTest.java b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToBeanTest.java index e14ed15ee..c62c06030 100755 --- a/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToBeanTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/convert/ConvertToBeanTest.java @@ -1,6 +1,7 @@ package cn.hutool.core.convert; import cn.hutool.core.bean.BeanUtilTest.SubPerson; +import cn.hutool.core.map.CaseInsensitiveMap; import cn.hutool.core.reflect.TypeReference; import org.junit.Assert; import org.junit.Test; @@ -91,4 +92,30 @@ public class ConvertToBeanTest { final SubPerson subPerson = Convert.convertQuietly(SubPerson.class, nullStr); Assert.assertNull(subPerson); } + + @Test + public void mapToMapWithSelfTypeTest() { + final CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap<>(); + caseInsensitiveMap.put("jerry", 1); + caseInsensitiveMap.put("Jerry", 2); + caseInsensitiveMap.put("tom", 3); + + Map map = Convert.toMap(String.class, String.class, caseInsensitiveMap); + Assert.assertEquals("2", map.get("jerry")); + Assert.assertEquals("2", map.get("Jerry")); + Assert.assertEquals("3", map.get("tom")); + } + @Test + public void beanToSpecifyMapTest() { + final SubPerson person = new SubPerson(); + person.setAge(14); + person.setOpenid("11213232"); + person.setName("测试A11"); + person.setSubName("sub名字"); + + Map map = Convert.toMap(LinkedHashMap.class, String.class, String.class, person); + Assert.assertEquals("测试A11", map.get("name")); + Assert.assertEquals("14", map.get("age")); + Assert.assertEquals("11213232", map.get("openid")); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java index cd7ae920b..aac0e1b76 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ZipUtilTest.java @@ -18,6 +18,7 @@ import java.io.OutputStream; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; +import java.util.zip.ZipFile; /** * {@link ZipUtil}单元测试 @@ -197,4 +198,19 @@ public class ZipUtilTest { ZipUtil.zip(FileUtil.file("d:\\test\\qr.zip"),false,dd); } + + @Test + @Ignore + public void sizeUnzip() throws IOException { + String zipPath = "F:\\BaiduNetdiskDownload\\demo.zip"; + String outPath = "F:\\BaiduNetdiskDownload\\test"; + ZipFile zipFile = new ZipFile(zipPath, Charset.forName("GBK")); + File file = new File(outPath); + // 限制解压文件大小为637KB + long size = 637*1024L; + + // 限制解压文件大小为636KB + // long size = 636*1024L; + ZipUtil.unzip(zipFile, file, size); + } } diff --git a/hutool-db/src/test/java/cn/hutool/db/H2Test.java b/hutool-db/src/test/java/cn/hutool/db/H2Test.java index 9df6de64d..9bb13afbe 100644 --- a/hutool-db/src/test/java/cn/hutool/db/H2Test.java +++ b/hutool-db/src/test/java/cn/hutool/db/H2Test.java @@ -1,10 +1,13 @@ package cn.hutool.db; +import cn.hutool.core.map.CaseInsensitiveMap; +import cn.hutool.core.map.MapUtil; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import java.util.List; +import java.util.Map; /** * H2数据库单元测试 @@ -46,4 +49,15 @@ public class H2Test { final Entity a1=db.get("test","a",1); Assert.assertEquals(Long.valueOf(111),a1.getLong("b")); } + + @Test + public void pageTest() { + String sql = "select * from test where a = @a and b = :b"; + Map paramMap = MapUtil.builder(new CaseInsensitiveMap()) + .put("A", 3) + .put("b", 31) + .build(); + final List query = Db.of(DS_GROUP_NAME).page(sql, Page.of(0, 3), paramMap); + Assert.assertEquals(1, query.size()); + } } diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java index 4f95c63a1..052c4657a 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/archiver/StreamArchiver.java @@ -11,6 +11,7 @@ import org.apache.commons.compress.archivers.ArchiveOutputStream; import org.apache.commons.compress.archivers.ArchiveStreamFactory; import org.apache.commons.compress.archivers.ar.ArArchiveOutputStream; import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; +import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream; import java.io.File; import java.io.IOException; @@ -78,6 +79,16 @@ public class StreamArchiver implements Archiver { * @param targetStream 归档输出的流 */ public StreamArchiver(final Charset charset, final String archiverName, final OutputStream targetStream) { + if("tgz".equalsIgnoreCase(archiverName) || "tar.gz".equalsIgnoreCase(archiverName)){ + //issue#I5J33E,支持tgz格式解压 + try { + this.out = new TarArchiveOutputStream(new GzipCompressorOutputStream(targetStream)); + } catch (IOException e) { + throw new IORuntimeException(e); + } + return; + } + final ArchiveStreamFactory factory = new ArchiveStreamFactory(charset.name()); try { this.out = factory.createArchiveOutputStream(archiverName, targetStream); diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java index 05fd60af6..127495602 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java @@ -10,6 +10,8 @@ import org.apache.commons.compress.archivers.ArchiveEntry; import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.compress.archivers.ArchiveInputStream; import org.apache.commons.compress.archivers.ArchiveStreamFactory; +import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; +import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import java.io.File; import java.io.IOException; @@ -71,6 +73,13 @@ public class StreamExtractor implements Extractor { in = IoUtil.toBuffered(in); if (StrUtil.isBlank(archiverName)) { this.in = factory.createArchiveInputStream(in); + } else if("tgz".equalsIgnoreCase(archiverName) || "tar.gz".equalsIgnoreCase(archiverName)){ + //issue#I5J33E,支持tgz格式解压 + try { + this.in = new TarArchiveInputStream(new GzipCompressorInputStream(in)); + } catch (IOException e) { + throw new IORuntimeException(e); + } } else { this.in = factory.createArchiveInputStream(archiverName, in); } diff --git a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java index 35d92d0d2..9fe4bf34a 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/compress/ArchiverTest.java @@ -10,14 +10,15 @@ import org.junit.Test; import java.io.File; +@SuppressWarnings("resource") public class ArchiverTest { @Test @Ignore - public void zipTest(){ + public void zipTest() { final File file = FileUtil.file("d:/test/compress/test.zip"); StreamArchiver.of(CharsetUtil.UTF_8, ArchiveStreamFactory.ZIP, file) - .add(FileUtil.file("d:/Java"), (f)->{ + .add(FileUtil.file("d:/Java"), (f) -> { Console.log("Add: {}", f.getPath()); return true; }) @@ -26,10 +27,10 @@ public class ArchiverTest { @Test @Ignore - public void tarTest(){ + public void tarTest() { final File file = FileUtil.file("d:/test/compress/test.tar"); StreamArchiver.of(CharsetUtil.UTF_8, ArchiveStreamFactory.TAR, file) - .add(FileUtil.file("d:/Java"), (f)->{ + .add(FileUtil.file("d:/Java"), (f) -> { Console.log("Add: {}", f.getPath()); return true; }) @@ -38,10 +39,10 @@ public class ArchiverTest { @Test @Ignore - public void cpioTest(){ + public void cpioTest() { final File file = FileUtil.file("d:/test/compress/test.cpio"); StreamArchiver.of(CharsetUtil.UTF_8, ArchiveStreamFactory.CPIO, file) - .add(FileUtil.file("d:/Java"), (f)->{ + .add(FileUtil.file("d:/Java"), (f) -> { Console.log("Add: {}", f.getPath()); return true; }) @@ -50,10 +51,22 @@ public class ArchiverTest { @Test @Ignore - public void sevenZTest(){ + public void sevenZTest() { final File file = FileUtil.file("d:/test/compress/test.7z"); CompressUtil.createArchiver(CharsetUtil.UTF_8, ArchiveStreamFactory.SEVEN_Z, file) - .add(FileUtil.file("d:/Java/apache-maven-3.6.3"), (f)->{ + .add(FileUtil.file("d:/Java/apache-maven-3.8.1"), (f) -> { + Console.log("Add: {}", f.getPath()); + return true; + }) + .finish().close(); + } + + @Test + @Ignore + public void tgzTest() { + final File file = FileUtil.file("d:/test/compress/test.tgz"); + CompressUtil.createArchiver(CharsetUtil.UTF_8, "tgz", file) + .add(FileUtil.file("d:/Java/apache-maven-3.8.1"), (f) -> { Console.log("Add: {}", f.getPath()); return true; }) diff --git a/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java b/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java index 4f4e306ed..c7aba91ac 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/compress/ExtractorTest.java @@ -27,4 +27,15 @@ public class ExtractorTest { extractor.extract(FileUtil.file("d:/test/compress/test2/")); } + + @Test + @Ignore + public void tgzTest(){ + Extractor extractor = CompressUtil.createExtractor( + CharsetUtil.defaultCharset(), + "tgz", + FileUtil.file("d:/test/test.tgz")); + + extractor.extract(FileUtil.file("d:/test/tgz/")); + } } diff --git a/hutool-swing/src/main/java/cn/hutool/swing/img/BackgroundRemoval.java b/hutool-swing/src/main/java/cn/hutool/swing/img/BackgroundRemoval.java index efd5072ba..310a597a0 100755 --- a/hutool-swing/src/main/java/cn/hutool/swing/img/BackgroundRemoval.java +++ b/hutool-swing/src/main/java/cn/hutool/swing/img/BackgroundRemoval.java @@ -299,7 +299,7 @@ public class BackgroundRemoval { } } - final Map map = new HashMap<>(list.size()); + final Map map = new HashMap<>(list.size(), 1); for (final String string : list) { Integer integer = map.get(string); if (integer == null) { @@ -309,7 +309,7 @@ public class BackgroundRemoval { } map.put(string, integer); } - String max = ""; + String max = StrUtil.EMPTY; long num = 0; for (final Map.Entry entry : map.entrySet()) { final String key = entry.getKey(); @@ -326,7 +326,7 @@ public class BackgroundRemoval { return ImgUtil.toHex(Integer.parseInt(strings[0]), Integer.parseInt(strings[1]), Integer.parseInt(strings[2])); } - return ""; + return StrUtil.EMPTY; } // -------------------------------------------------------------------------- private diff --git a/hutool-swing/src/main/java/cn/hutool/swing/img/ImgUtil.java b/hutool-swing/src/main/java/cn/hutool/swing/img/ImgUtil.java index 867a9261e..1e89906a4 100755 --- a/hutool-swing/src/main/java/cn/hutool/swing/img/ImgUtil.java +++ b/hutool-swing/src/main/java/cn/hutool/swing/img/ImgUtil.java @@ -1356,6 +1356,19 @@ public class ImgUtil { return out.toByteArray(); } + /** + * 根据文字创建透明背景的PNG图片 + * + * @param str 文字 + * @param font 字体{@link Font} + * @param fontColor 字体颜色,默认黑色 + * @param out 图片输出地 + * @throws IORuntimeException IO异常 + */ + public static void createTransparentImage(String str, Font font, Color fontColor, ImageOutputStream out) throws IORuntimeException { + writePng(createImage(str, font, null, fontColor, BufferedImage.TYPE_INT_ARGB), out); + } + /** * 根据文字创建PNG图片 * diff --git a/hutool-swing/src/test/java/cn/hutool/swing/img/ImgUtilTest.java b/hutool-swing/src/test/java/cn/hutool/swing/img/ImgUtilTest.java index dd2c13a2c..91763b9dd 100755 --- a/hutool-swing/src/test/java/cn/hutool/swing/img/ImgUtilTest.java +++ b/hutool-swing/src/test/java/cn/hutool/swing/img/ImgUtilTest.java @@ -1,7 +1,7 @@ package cn.hutool.swing.img; import cn.hutool.core.io.FileUtil; -import cn.hutool.swing.img.ImgUtil; +import cn.hutool.core.io.IORuntimeException; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @@ -147,4 +147,26 @@ public class ImgUtilTest { System.out.println(mainColor); } + @Test + @Ignore + public void createImageTest() throws IORuntimeException, IOException { + ImgUtil.createImage( + "版权所有", + new Font("黑体", Font.BOLD, 50), + Color.WHITE, + Color.BLACK, + ImageIO.createImageOutputStream(new File("d:/test/createImageTest.png")) + ); + } + + @Test + @Ignore + public void createTransparentImageTest() throws IORuntimeException, IOException { + ImgUtil.createTransparentImage( + "版权所有", + new Font("黑体", Font.BOLD, 50), + Color.BLACK, + ImageIO.createImageOutputStream(new File("d:/test/createTransparentImageTest.png")) + ); + } }