background image

Java 判断图片文件的类型

系统中某些图片可能已经被修改了后缀名,所以不能只是对后缀名进行判断。下面的示例
代码就是如何判断一个图片的具体类型的。
  import java.io.*;
  import javax.imageio.*;
  import java.awt.image.*;
  import java.util.*;
  import javax.imageio.stream.*;
  public class Test{
  public static void main(String[] args) {
  File f = new File("c://test//2.jpg");
  if (f.exists()) {
  System.out.println(getFormatInFile(f));
  }
  }
  // Returns the format of the image in the file 'f'.
  // Returns null if the format is not known.

  public static String getFormatInFile(File f) {
  return getFormatName(f);
  }
  // Returns the format name of the image in the object 'o'.
  // Returns null if the format is not known.

  private static String getFormatName(Object o) {
  try {
  // Create an image input stream on the image

  ImageInputStream iis = ImageIO.createImageInputStream(o);
  // Find all image readers that recognize the image format

  Iterator iter = ImageIO.getImageReaders(iis);
  if (!iter.hasNext()) {
  // No readers found

  return null;
  }
  // Use the first reader