首页 > 代码库 > 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"))));