This commit is contained in:
Looly 2023-12-05 21:41:41 +08:00
parent 0db70ea1d7
commit 73152c5361
4 changed files with 86 additions and 30 deletions

View File

@ -18,6 +18,10 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
/**
* 文本相似度计算工具类单元测试
*

View File

@ -20,6 +20,7 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.DefaultSingletonBeanRegistry;
import org.springframework.context.*;
import org.springframework.core.ResolvableType;
import org.springframework.core.env.ConfigurableEnvironment;
import java.lang.reflect.ParameterizedType;
import java.util.Arrays;
@ -65,7 +66,7 @@ public class SpringUtil implements ApplicationContextInitializer<ConfigurableApp
*/
public static ListableBeanFactory getBeanFactory() {
final ListableBeanFactory factory = applicationContext;
if(null == factory){
if (null == factory) {
throw new HutoolException("No ConfigurableListableBeanFactory or ApplicationContext injected, maybe not in the Spring environment?");
}
return factory;
@ -167,10 +168,45 @@ public class SpringUtil implements ApplicationContextInitializer<ConfigurableApp
* @since 5.3.3
*/
public static String getProperty(final String key) {
if (null == applicationContext) {
return null;
}
return applicationContext.getEnvironment().getProperty(key);
final ConfigurableEnvironment environment = getEnvironment();
return null == environment ? null : environment.getProperty(key);
}
/**
* 获取配置文件配置项的值
*
* @param key 配置项key
* @param defaultValue 默认值
* @return 属性值
* @since 5.8.24
*/
public static String getProperty(final String key, final String defaultValue) {
final ConfigurableEnvironment environment = getEnvironment();
return null == environment ? null : environment.getProperty(key, defaultValue);
}
/**
* 获取配置文件配置项的值
*
* @param <T> 属性值类型
* @param key 配置项key
* @param targetType 配置项类型
* @param defaultValue 默认值
* @return 属性值
* @since 5.8.24
*/
public static <T> T getProperty(final String key, final Class<T> targetType, final T defaultValue) {
final ConfigurableEnvironment environment = getEnvironment();
return null == environment ? null : environment.getProperty(key, targetType, defaultValue);
}
/**
* 获取环境属性
*
* @return {@link ConfigurableEnvironment}
*/
public static ConfigurableEnvironment getEnvironment() {
return null == applicationContext ? null : applicationContext.getEnvironment();
}
/**

View File

@ -501,28 +501,22 @@ public class ImgUtil {
* 图像类型转换GIF=JPGGIF=PNGPNG=JPGPNG=GIF(X)BMP=PNG
*
* @param srcImageFile 源图像文件
* @param destImageFile 目标图像文件
* @param targetImageFile 目标图像文件
*/
public static void convert(final File srcImageFile, final File destImageFile) {
public static void convert(final File srcImageFile, final File targetImageFile) {
Assert.notNull(srcImageFile);
Assert.notNull(destImageFile);
Assert.isFalse(srcImageFile.equals(destImageFile), "Src file is equals to dest file!");
Assert.notNull(targetImageFile);
Assert.isFalse(srcImageFile.equals(targetImageFile), "Src file is equals to dest file!");
// 通过扩展名检查图片类型相同类型直接复制
final String srcExtName = FileNameUtil.extName(srcImageFile);
final String destExtName = FileNameUtil.extName(destImageFile);
final String destExtName = FileNameUtil.extName(targetImageFile);
if (StrUtil.equalsIgnoreCase(srcExtName, destExtName)) {
// 扩展名相同直接复制文件
FileUtil.copy(srcImageFile, destImageFile, true);
FileUtil.copy(srcImageFile, targetImageFile, true);
}
ImageOutputStream imageOutputStream = null;
try {
imageOutputStream = getImageOutputStream(destImageFile);
convert(read(srcImageFile), destExtName, imageOutputStream, StrUtil.equalsIgnoreCase(IMAGE_TYPE_PNG, srcExtName));
} finally {
IoUtil.closeQuietly(imageOutputStream);
}
Img.from(srcImageFile).write(targetImageFile);
}
/**
@ -531,11 +525,11 @@ public class ImgUtil {
*
* @param srcStream 源图像流
* @param formatName 包含格式非正式名称的 String如JPGJPEGGIF等
* @param destStream 目标图像输出流
* @param targetStream 目标图像输出流
* @since 3.0.9
*/
public static void convert(final InputStream srcStream, final String formatName, final OutputStream destStream) {
write(read(srcStream), formatName, getImageOutputStream(destStream));
public static void convert(final InputStream srcStream, final String formatName, final OutputStream targetStream) {
write(read(srcStream), formatName, getImageOutputStream(targetStream));
}
/**
@ -544,17 +538,11 @@ public class ImgUtil {
*
* @param srcImage 源图像流
* @param formatName 包含格式非正式名称的 String如JPGJPEGGIF等
* @param destImageStream 目标图像输出流
* @param isSrcPng 源图片是否为PNG格式
* @param targetImageStream 目标图像输出流
* @since 4.1.14
*/
public static void convert(final Image srcImage, final String formatName, final ImageOutputStream destImageStream, final boolean isSrcPng) {
final BufferedImage src = toBufferedImage(srcImage, isSrcPng ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB);
try {
ImageIO.write(src, formatName, destImageStream);
} catch (final IOException e) {
throw new IORuntimeException(e);
}
public static void convert(final Image srcImage, final String formatName, final ImageOutputStream targetImageStream) {
Img.from(srcImage).setTargetImageType(formatName).write(targetImageStream);
}
// endregion

View File

@ -0,0 +1,28 @@
/*
* Copyright (c) 2023. looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* https://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.dromara.hutool.swing.img;
import org.dromara.hutool.core.io.file.FileUtil;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
public class IssueI8L8UATest {
@Test
@Disabled
void convertTest() {
ImgUtil.convert(
FileUtil.file("d:/test/1.png"),
FileUtil.file("d:/test/1.jpg"));
}
}