如何区分电影和图像
How to distinguish between movie and image
有什么"好"的方法来区分电影文件和图像文件吗?我想知道我的"std::wstring filePath"到底是什么——一部电影,还是一张图片。因此,我可以更进一步,只要我确信我正在使用已知的文件类型。
换句话说,我有两个类MyImage和MyMovie,它们都需要在构造函数中的文件路径。在创建其中一个类之前,我想以某种方式验证文件的路径。
bool isMovie(const std::wstring & filePath);
bool isImage(const std::wstring & filePath);
当然,我考虑过文件扩展名,但我不确定它是否是好的,也不容易出错的解决方案。那么,使用文件扩展名或者其他可行的解决方案是好的吗。?
提前感谢
您可以使用libmagic来检测它是什么类型的文件。您传入文件路径,它会为您提供文件的文本描述或MIME类型。
通常文件都有特殊的魔法字节。如果你可以控制规格,我会使用这个。如果你尝试打开zip、gif或其他二进制文件,你通常可以在那里找到一些独特的字符串。
有一个名为file
的unix工具实用程序提供了这样的功能,因此可能存在某种标准。
SQLite3提供了一个很好的例子。查看1.2和1.2.5。因此,不仅给出了它是SQLite 3数据库的信息,还提供了额外的应用程序id,这样其他工具就可以识别它是哪个应用程序的数据库。
当我玩二进制的东西时,我个人使用文件的前几个字节来为我的文件编码类型和版本信息。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 如何区分电影和图像