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