Qt识别文件类型的正确姿势

一般我们识别文件类型都是从文件的后缀区分,这样做可以识别出文件格式。但在Qt里有更好的实现方法。

以识别图片类型为例

  一般识别图片类型方法:
虽然这一方法可以实现识别图片类型,但是维护起来相对困难。如果真的要识别所有的文件是否是图片类型,还需要添加更多的判断方法。

1
2
3
4
5
6
QString file("sample.jpg");
if (file.contains(".jpg") ||
file.contains(".bmp") ||
file.contains(".png")) {
qDebug()<<"这是图片。";
}

  使用Qt接口识别的方法(推荐) :
QMimeType类描述由MIME类型字符串表示的文件数据类型

1
2
3
4
5
QMimeDatabase db;
QMimeType mime = db.mimeTypeForFile("sample.bmp");
if (mime.name().startsWith("image/")) {
qDebug()<<"这是图片。";
}

一些MIME类型常用对照表

类型 描述 示例
text 普通文本 text/plain,
text/html,
text/css,
text/javascript
image 图像文件(包含动态gif) image/gif,
image/png,
image/jpeg,
image/bmp,
image/webp
audio 音频文件 audio/wav,
audio/mpeg,
audio/midi,
audio/webm,
audio/ogg
video 视频文件 video/mp4,
video/x-flv,
video/webm,
video/ogg
application 二进制数据 application/xml,
application/pdf