1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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;
- /**
- * <p>
- * TODO
- * </p>
- *
- * @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);
- }
- }
|