如何在不知道文件扩展名的情况下获取图像类型?

时间:2012-09-21 13:44:47

标签: java

我需要知道没有文件扩展名的文件扩展名?这可以使用java IO API吗?

我在阅读JPG文件时遇到以下异常:

javax.imageio.IIOException: Unsupported Image Type

有没有人有任何想法如何解决这个问题?

当我尝试在Mac OS X或Windows中的普通图像查看器中打开图像时,它可以正常工作。

是否有可能将文件重命名为其他类型且原始类型与扩展名不同?

2 个答案:

答案 0 :(得分:4)

您可以使用此代码获取mime类型。

String imageName = "C:\\Documents and Settings\\home\\Desktop\\P092870.jpg";
File input = new File(imageName);
System.out.println("System Type description of " + input.getName() + " is " + 
          FileSystemView.getFileSystemView().getSystemTypeDescription(input));
System.out.println("Mime Type of " + input.getName() + " is " +
          new MimetypesFileTypeMap().getContentType(input));

答案 1 :(得分:0)

您可以使用mime-util库。我的示例代码将获取文件的mime类型。

    String imagePath = "filepath";
    File file = new File(imagePath);

    if (MimeUtil.getMimeDetector(MagicMimeMimeDetector.class.getName()) == null)  {
        MimeUtil.registerMimeDetector(MagicMimeMimeDetector.class.getName());
    }
    Collection<MimeType> mimeTypes = MimeUtil.getMimeTypes(file);
    for (MimeType mimeType : mimeTypes) {
        System.out.println(mimeType.getMediaType());
    }