public static void main(String[] args) throws IOException { String filePath = "C:\\Users\\80975\\Desktop/1.png"; File file = new File(filePath); ImageInputStream iis = ImageIO.createImageInputStream(file); Iterator iter = ImageIO.getImageReaders(iis); if (!iter.hasNext()) {//文件不是图片 System.out.println("此文件不为图片文件"); }else { System.out.println("是"); } BufferedImage bi = ImageIO.read(file); if(bi == null){ System.out.println("此文件不为图片文件"); }else { System.out.println("是"); } }
使用ImageIO 判断图片宽高
public static boolean isImage(InputStream inputStream) { if (inputStream == null) { return false; } Image img; try { img = ImageIO.read(inputStream); return !(img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0); } catch (Exception e) { return false; } }
判断文件头信息
public static String getImageType(File srcFilePath) { FileInputStream imgFile; byte[] b = new byte[10]; int l = -1; try { imgFile = new FileInputStream(srcFilePath); l = imgFile.read(b); imgFile.close(); } catch (Exception e) { return null; } if (l == 10) { byte b0 = b[0]; byte b1 = b[1]; byte b2 = b[2]; byte b3 = b[3]; byte b6 = b[6]; byte b7 = b[7]; byte b8 = b[8]; byte b9 = b[9]; if (b0 == (byte) 'G' && b1 == (byte) 'I' && b2 == (byte) 'F') { return "gif"; } else if (b1 == (byte) 'P' && b2 == (byte) 'N' && b3 == (byte) 'G') { return "png"; } else if (b6 == (byte) 'J' && b7 == (byte) 'F' && b8 == (byte) 'I' && b9 == (byte) 'F') { return "jpg"; } else { return null; } } else { return null; } }