如何在Qt中查明文件是照片还是视频?
答案 0 :(得分:4)
你问Qt是否可以判断某件事是“照片还是视频”,这是不明确的,但我会把它翻译成:
如果我有文件名,Qt是否有功能告诉我这是(a)图像文件,(b)视频文件,还是(c)其他类型的文件?
了解文件的类型可能来自几个来源。文件名称中有扩展名,有“嗅探”文件数据的内容并查找已识别的魔术标题序列,并且随机元数据可能存在于管理文件的应用程序或操作系统非常特定的其他位置。
有人问了一个问题,即如何在Qt中获取文件的“MIME类型”:
Find out the mime type and associated applications with Qt
如果你能做到这一点,你可以看到你回来的字符串是否在image/
层次结构中:
http://en.wikipedia.org/wiki/Internet_media_type#Type_image
但是没有Qt功能。所以你几乎要检查文件扩展名,或者如果你特别想知道给定文件是否是Qt可以读取的图像格式,那么你可以使用QImageReader::imageFormat()来“嗅“文件:
QByteArray imageFormat = QImageReader::imageFormat(fileName);
如果图像位于Qt认为可加载的图像类型集中,它将回送与该格式对应的字符串。否则你会得到一个空字符串。这并不是说失败这个测试意味着某些东西不是其他类型的形象,当然。
至于确定某些内容是否是Qt可以播放的视频文件,如果您通过MediaSource::type()使用Phonon并检查是否有可能对视频文件进行类似的“嗅探”它不是Phonon::MediaSource::Invalid
。