如何区分电影和图像

How to distinguish between movie and image

本文关键字:图像 电影 何区      更新时间:2023-10-16

有什么"好"的方法来区分电影文件和图像文件吗?我想知道我的"std::wstring filePath"到底是什么——一部电影,还是一张图片。因此,我可以更进一步,只要我确信我正在使用已知的文件类型。

换句话说,我有两个类MyImageMyMovie,它们都需要在构造函数中的文件路径。在创建其中一个类之前,我想以某种方式验证文件的路径。

bool isMovie(const std::wstring & filePath);
bool isImage(const std::wstring & filePath);

当然,我考虑过文件扩展名,但我不确定它是否是好的,也不容易出错的解决方案。那么,使用文件扩展名或者其他可行的解决方案是好的吗。?

提前感谢

您可以使用libmagic来检测它是什么类型的文件。您传入文件路径,它会为您提供文件的文本描述或MIME类型。

通常文件都有特殊的魔法字节。如果你可以控制规格,我会使用这个。如果你尝试打开zip、gif或其他二进制文件,你通常可以在那里找到一些独特的字符串。

有一个名为file的unix工具实用程序提供了这样的功能,因此可能存在某种标准。

SQLite3提供了一个很好的例子。查看1.21.2.5。因此,不仅给出了它是SQLite 3数据库的信息,还提供了额外的应用程序id,这样其他工具就可以识别它是哪个应用程序的数据库。

当我玩二进制的东西时,我个人使用文件的前几个字节来为我的文件编码类型和版本信息。