package com.fdkankan.common.constant; import cn.hutool.core.img.ImgUtil; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** *
* TODO *
* * @author dengsixing * @since 2022/4/8 **/ public class ImageUtil { public static final String TYPE_JPG = "jpg"; public static final String TYPE_GIF = "gif"; public static final String TYPE_PNG = "png"; public static final String TYPE_BMP = "bmp"; public static final String TYPE_UNKNOWN = "unknown"; public static boolean isImage(FileInputStream fis){ String picType = getPicType(fis); if(TYPE_JPG.equals(picType) || TYPE_GIF.equals(picType) || TYPE_PNG.equals(picType) || TYPE_BMP.equals(picType)){ return true; } return false; } public static String getPicType(FileInputStream fis) { // 读取文件的前几个字节来判断图片格式 byte[] b = new byte[4]; try { fis.read(b, 0, b.length); String type = bytesToHexString(b).toUpperCase(); if (type.contains("FFD8FF")) { return TYPE_JPG; } else if (type.contains("89504E47")) { return TYPE_PNG; } else if (type.contains("47494638")) { return TYPE_GIF; } else if (type.contains("424D")) { return TYPE_BMP; } else { return TYPE_UNKNOWN; } } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } public static void main(String[] args) throws IOException { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); String path = "G:\\home\\backend\\4dkankan_v4\\sale\\file\\sale\\file\\test\\5474a1e8d93747f3aec79e6021c10a3b.png"; String picType = getPicType(new FileInputStream(path)); System.out.println(picType); BufferedImage read = ImgUtil.read(new File(path)); ImageIO.write(read, "png", byteArrayOut); } }