你能检查一个文件是否真的"真的" java中的图像?

时间:2018-05-15 21:23:30

标签: java image

我正在学习使用Java编程,现在我正在尝试使用Swing中的GUI创建程序,这将在给定目录中制作幻灯片。现在,我的问题是你可以检查一个文件是否真的是一个图像?我正在谈论的文件不仅具有正确的扩展名,例如.jpg或.png,但也包含可以解释为图像的内容我猜?我的措辞可能不准确,但我希望我的问题至少可以部分理解。如果我的问题的任何部分有不明确的解释,请尽可能广泛地回答。我知道我要求相当多,但如果有人能回答,我会非常感激。 (不是Test if a file is an image file的副本,因为我认为那里的作者意味着扩展本身) 提前致谢, NFSU

2 个答案:

答案 0 :(得分:4)

大多数图像文件以幻数开头,因此要快速检查,请查看。

E.g。 PNG文件始终以字节89 50 4E 47 0D 0A 1A 0A开头。

我会留下你想要支持的任何图像格式的幻数的研究。

更新:另请参阅维基百科上的list of file signatures(由DevilsHnd提供)

答案 1 :(得分:4)

我只是尝试将其加载为图像并查看是否有图像:

import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        System.out.println(isImage(new File("./dataset1.csv")));  // false
        System.out.println(isImage(new File("./graph.png")));  // true
    }

    public static boolean isImage(File file)
    {
        try {
            return ImageIO.read(file) != null;
        } catch (Exception e) {
            return false;
        }
    }
}