add webp support

This commit is contained in:
Looly 2022-06-09 12:00:30 +08:00
parent cd69a72cb6
commit f918a9c2e2
4 changed files with 21 additions and 104 deletions

View File

@ -83,6 +83,8 @@ public class FileTypeUtil {
FILE_TYPE_MAP.put("AC9EBD8F", "qdf"); // Quicken (qdf)
FILE_TYPE_MAP.put("E3828596", "pwl"); // Windows Password (pwl)
FILE_TYPE_MAP.put("2E7261FD", "ram"); // Real Audio (ram)
// https://stackoverflow.com/questions/45321665/magic-number-for-google-image-format
FILE_TYPE_MAP.put("52494646", "webp");
}
/**

View File

@ -75,4 +75,13 @@ public class FileTypeUtilTest {
inputStream.reset();
}
@Test
@Ignore
public void webpTest(){
// https://gitee.com/dromara/hutool/issues/I5BGTF
final File file = FileUtil.file("d:/test/a.webp");
final BufferedInputStream inputStream = FileUtil.getInputStream(file);
final String type = FileTypeUtil.getType(inputStream);
Console.log(type);
}
}

View File

@ -1,7 +1,7 @@
package cn.hutool.extra.management;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.regex.ReUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.SystemUtil;
import java.io.Serializable;
@ -19,14 +19,6 @@ public class JavaInfo implements Serializable {
private final String JAVA_VENDOR = SystemUtil.get("java.vendor", false);
private final String JAVA_VENDOR_URL = SystemUtil.get("java.vendor.url", false);
// 1.1--1.3能否识别?
private final boolean IS_JAVA_1_1 = getJavaVersionMatches("1.1");
private final boolean IS_JAVA_1_2 = getJavaVersionMatches("1.2");
private final boolean IS_JAVA_1_3 = getJavaVersionMatches("1.3");
private final boolean IS_JAVA_1_4 = getJavaVersionMatches("1.4");
private final boolean IS_JAVA_1_5 = getJavaVersionMatches("1.5");
private final boolean IS_JAVA_1_6 = getJavaVersionMatches("1.6");
private final boolean IS_JAVA_1_7 = getJavaVersionMatches("1.7");
private final boolean IS_JAVA_1_8 = getJavaVersionMatches("1.8");
private final boolean IS_JAVA_9 = getJavaVersionMatches("9");
private final boolean IS_JAVA_10 = getJavaVersionMatches("10");
@ -91,7 +83,6 @@ public class JavaInfo implements Serializable {
/**
* 返回1位整型的java版本取自系统属性{@code java.version}7811151718返回1位java10及其之后的版本返回值为2位
* <ul>
* <li>JDK 1.7.0_80{@code 7}</li>
* <li>JDK 1.8.0_211{@code 8}</li>
* <li>JDK 11.0.2{@code 11}</li>
* <li>JDK 13.0.11{@code 13}</li>
@ -178,90 +169,6 @@ public class JavaInfo implements Serializable {
return JAVA_VENDOR_URL;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.1则返回{@code true}
*/
public final boolean isJava1_1() {
return IS_JAVA_1_1;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.2则返回{@code true}
*/
public final boolean isJava1_2() {
return IS_JAVA_1_2;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.3则返回{@code true}
*/
public final boolean isJava1_3() {
return IS_JAVA_1_3;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.4则返回{@code true}
*/
public final boolean isJava1_4() {
return IS_JAVA_1_4;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.5则返回{@code true}
*/
public final boolean isJava1_5() {
return IS_JAVA_1_5;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.6则返回{@code true}
*/
public final boolean isJava1_6() {
return IS_JAVA_1_6;
}
/**
* 判断当前Java的版本
*
* <p>
* 如果不能取得系统属性{@code java.version}因为Java安全限制则总是返回 {@code false}
*
* @return 如果当前Java版本为1.7则返回{@code true}
*/
public final boolean isJava1_7() {
return IS_JAVA_1_7;
}
/**
* 判断当前Java的版本
*
@ -322,32 +229,32 @@ public class JavaInfo implements Serializable {
return IS_JAVA_12;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava13() {
return IS_JAVA_13;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava14() {
return IS_JAVA_14;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava15() {
return IS_JAVA_15;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava16() {
return IS_JAVA_16;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava17() {
return IS_JAVA_17;
}
/**是否是当前java的版本。 @since 6.0.1 */
/**是否是当前java的版本。*/
public final boolean isJava18() {
return IS_JAVA_18;
}

View File

@ -10,10 +10,9 @@ public class JavaInfoTest {
@Test
public void isJavaVersionAtLeastTest() {
boolean javaVersionAtLeast1 = ManagementUtil.getJavaInfo().isJavaVersionAtLeast(1.8f);
final int versionInt = ManagementUtil.getJavaInfo().getVersionIntSimple();
Assert.assertTrue(versionInt >= 8);
final boolean javaVersionAtLeast1 = ManagementUtil.getJavaInfo().isJavaVersionAtLeast(1.8f);
Assert.assertTrue(javaVersionAtLeast1);
boolean javaVersionAtLeast2 = ManagementUtil.getJavaInfo().isJavaVersionAtLeast(8f);
Assert.assertTrue(javaVersionAtLeast2);
}
}