Qt中如何判断文件是照片还是视频?
Posted
技术标签:
【中文标题】Qt中如何判断文件是照片还是视频?【英文标题】:How do I find out if a file is a photo or a video in Qt? 【发布时间】:2011-10-15 20:00:22 【问题描述】:在 Qt 中如何判断文件是照片还是视频?
【问题讨论】:
我想用 suffix() 来检查它,但我想知道是否还有其他方法...... 注意这个问题的答案:***.com/questions/5750247/… 好的...你能更精确一点 【参考方案1】:你问 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
.
【讨论】:
以上是关于Qt中如何判断文件是照片还是视频?的主要内容,如果未能解决你的问题,请参考以下文章