【IT168 技术文档】系统中某些图片可能已经被修改了后缀名,所以不能只是对后缀名进行判断。下面的示例代码就是如何判断一个图片的具体类型的。
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 ImageReader reader = iter.next(); // Close stream iis.close(); // Return the format name return reader.getFormatName(); } catch (IOException e) { // } // The image could not be read return null; } }