首页 > 代码库 > java代码判断图片文件格式, 不是根据文件后缀来判断。
java代码判断图片文件格式, 不是根据文件后缀来判断。
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";/** * byte数组转换成16进制字符串 * @param src * @return */ public static String bytesToHexString(byte[] src){ StringBuilder stringBuilder = new StringBuilder(); if (src =http://www.mamicode.com/= 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(); } /** * 根据文件流判断图片类型 * @param fis * @return jpg/png/gif/bmp */ 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; }//test codeSystem.out.println("图片格式1: " + getPicType(new FileInputStream(new File("D:\\3_副本.png"))));System.out.println("图片格式2: " + getPicType(new FileInputStream(new File("D:\\3.png"))));
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。